Программное закрытие MenuStrip

У меня есть MenuStrip, который я добавил в форму, и в одном из раскрывающихся меню у меня есть текстовое поле. Когда я нажимаю ввод в текстовом поле, я хочу, чтобы функция запускалась, а затем закрывалось раскрывающееся меню. Я знаю, как выполнить часть ввода, но я понятия не имею, как закрыть раскрывающееся меню MenuStrip.


person Nilbert    schedule 24.05.2010    source источник
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
comment
Что, если это подменю другого меню? Как пройти вверх по цепочке подменю, чтобы попасть в самый корень меню? Я пробовал Owner.Owner, но это не определено, а Owner.Parent приводит к тому, что исключение Parent не установлено. - person Nilbert; 25.05.2010
comment
Просто вызовите метод 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