2010-05-24 4 views
2

J'ai un MenuStrip que j'ai ajouté à un formulaire, et dans l'un des menus déroulants, j'ai une zone de texte. Quand j'appuie sur entrer dans la zone de texte, je veux lancer une fonction, puis fermer le menu déroulant. Je sais comment faire la partie d'entrée, mais je ne sais pas comment fermer le menu déroulant MenuStrip. Est-ce que quelqu'un sait comment faire cela?Fermeture d'un fichier MenuStrip par programme

+0

Veuillez ne pas mettre d'étiquettes (C#) dans le titre. Laissez-les dans les tags. –

+0

Désolé à ce sujet, ne se reproduira plus. – Nilbert

Répondre

4

Appelez la méthode Hide() du propriétaire. Par exemple:

private void toolStripTextBox1_KeyDown(object sender, KeyEventArgs e) { 
     if (e.KeyData == Keys.Enter) { 
      e.SuppressKeyPress = true; 
      toolStripTextBox1.Owner.Hide(); 
     } 
    } 
+0

Que faire si c'est un sous-menu d'un autre menu? Comment remonter la chaîne des sous-menus pour arriver à la racine même du menu? J'ai essayé Owner.Owner mais cela n'est pas défini et Owner.Parent entraîne une exception de "Parent non défini". – Nilbert

+0

Appelez simplement la méthode HideDropDown() de l'élément de menu particulier que vous souhaitez masquer. –

2

Vous pouvez essayer (a fonctionné pour moi)

for(int x = 0; x < menu.Items.Count; x++) ((System.Windows.Forms.ToolStripDropDownItem)menu.Items[x]).HideDropDown();

0

C'est une vieille question, mais je suis tombé sur la même question et compris la solution, donc pour les autres:

Vous devez appeler la méthode HideDropDown() de l'élément de menu principal, quelle que soit l'imbrication de votre zone de texte (autre contrôle). Par exemple, supposons que vous ayez une barre d'outils avec Fichier, Éditer, Aide. Par exemple, disons que vous avez une barre d'outils avec Fichier, Éditer, Aide. Dans le menu Edition, vous avez votre zone de texte niché quelque part:

EditMenuItem -> FindMenuItem -> SearchTextBoxHere

Vous appelez la méthode de menu Edition HideDropDown() sur l'événement KeyDown de votre zone de texte:

EditMenuItem .HideDropDown();

Questions connexes