我有一个MenuStrip添加到了一个窗体上,在其中一个下拉菜单中,我有一个文本框。当我在文本框上按下Enter键时,我希望运行一个函数,然后关闭下拉菜单。我知道如何完成Enter部分,但我不知道如何关闭MenuStrip下拉菜单。
调用Owner的Hide()方法。例如:
private void toolStripTextBox1_KeyDown(object sender, KeyEventArgs e) {
if (e.KeyData == Keys.Enter) {
e.SuppressKeyPress = true;
toolStripTextBox1.Owner.Hide();
}
}
for(int x = 0; x < menu.Items.Count; x++)
((System.Windows.Forms.ToolStripDropDownItem)menu.Items[x]).HideDropDown();
该代码可以隐藏菜单的下拉列表。这是一个旧问题,但我遇到了同样的问题并找到了解决方法,所以为其他人提供帮助:
无论你的文本框(或其他控件)嵌套多深,都需要调用主菜单项的HideDropDown()
方法。
例如,假设你有一个工具栏,其中包括文件
、编辑
、帮助
。在编辑
菜单中,你有一个嵌套在某个地方的文本框:
编辑菜单项 -> 查找菜单项 -> 在这里搜索文本框
你需要在文本框的keydown事件中调用编辑菜单的HideDropDown()
方法:
EditMenuItem.HideDropDown();