2010-05-24 93 views
2

我有一个已添加到表单的MenuStrip,并且在其中的一个下拉菜单中,我有一个文本框。当我在文本框中输入时,我想要一个函数运行,然后关闭下拉菜单。我知道如何完成输入部分,但我不知道如何关闭MenuStrip下拉菜单。有人知道怎么做这个吗?以编程方式关闭MenuStrip

+0

请不要将标签(C#)放入标题中。将它们留在标签中。 – 2010-05-24 14:26:30

+0

对不起,不会再发生。 – Nilbert 2010-05-25 15:57:12

回答

4

调用所有者的Hide()方法。例如:

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

如果它是另一个菜单的子菜单呢?我如何走上子菜单链到达菜单的根源?我尝试了Owner.Owner,但这是未定义的,并且Owner.Parent导致“父未设置”的例外。 – Nilbert 2010-05-25 16:21:57

+0

只需调用您要隐藏的特定菜单项的HideDropDown()方法即可。 – 2010-05-25 16:54:14

2

你可以试试这个(工作对我来说)

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

0

这是一个老问题,但我遇到同样的问题,并想出解决方案,所以对于其他人:

无论您的文本框(或其他控件)如何嵌套,您都需要调用主菜单项的HideDropDown()方法。

例如,假设您有一个带有文件,编辑,帮助的工具条。在编辑菜单,你有你的文本框嵌套的地方:

EditMenuItem - > FindMenuItem - > SearchTextBoxHere

你会调用编辑菜单中的HideDropDown()方法,在你的文本框的keydown事件:

EditMenuItem .HideDropDown();