У меня есть MenuStrip, который я добавил в форму, и в одном из раскрывающихся меню у меня есть текстовое поле. Когда я нажимаю ввод в текстовом поле, я хочу, чтобы функция запускалась, а затем закрывалось раскрывающееся меню. Я знаю, как выполнить часть ввода, но я понятия не имею, как закрыть раскрывающееся меню MenuStrip.
Программное закрытие MenuStrip
comment
Пожалуйста, не ставьте теги (C#) в заголовок. Оставьте их в тегах.
- person John Saunders   schedule 24.05.2010
comment
Извините за это, больше не повторится.
- person Nilbert   schedule 25.05.2010
Ответы (3)
Вызовите метод Hide() владельца. Например:
private void toolStripTextBox1_KeyDown(object sender, KeyEventArgs e) {
if (e.KeyData == Keys.Enter) {
e.SuppressKeyPress = true;
toolStripTextBox1.Owner.Hide();
}
}
person
Hans Passant
schedule
24.05.2010
Что, если это подменю другого меню? Как пройти вверх по цепочке подменю, чтобы попасть в самый корень меню? Я пробовал Owner.Owner, но это не определено, а Owner.Parent приводит к тому, что исключение Parent не установлено.
- person Nilbert; 25.05.2010
Просто вызовите метод HideDropDown() конкретного пункта меню, который вы хотите скрыть.
- person Hans Passant; 25.05.2010
Вы можете попробовать это (сработало для меня)
for(int x = 0; x < menu.Items.Count; x++)
((System.Windows.Forms.ToolStripDropDownItem)menu.Items[x]).HideDropDown();
person
WereWolf
schedule
13.04.2012
Это старый вопрос, но я столкнулся с той же проблемой и нашел решение, поэтому для других:
Вам нужно вызвать метод HideDropDown()
пункта главного меню, независимо от того, насколько вложенным является ваше текстовое поле (или другой элемент управления).
Например, допустим, у вас есть полоса инструментов с File
, Edit
, Help
. В меню Edit
ваше текстовое поле где-то вложено:
EditMenuItem -> FindMenuItem -> SearchTextBoxHere
Вы должны вызвать метод HideDropDown()
меню "Правка" в событии keydown вашего текстового поля:
EditMenuItem.HideDropDown();
person
JuanR
schedule
13.06.2016