2010-05-24 138 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();