Закрытие MenuStrip программно - PullRequest
4 голосов
/ 24 мая 2010

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

Ответы [ 3 ]

5 голосов
/ 24 мая 2010

Вызовите метод Hide () владельца. Например:

    private void toolStripTextBox1_KeyDown(object sender, KeyEventArgs e) {
        if (e.KeyData == Keys.Enter) {
            e.SuppressKeyPress = true;
            toolStripTextBox1.Owner.Hide();
        }
    }
2 голосов
/ 13 апреля 2012

Вы можете попробовать это (работал для меня)

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

1 голос
/ 13 июня 2016

Это старый вопрос, но я столкнулся с той же проблемой и нашел решение, так что для других там:

Вам необходимо вызвать метод HideDropDown() пункта главного меню, независимо от того, как вложено ваше текстовое поле (или другой элемент управления).

Например, допустим, у вас есть инструментальная полоса с File, Edit, Help. В меню Edit ваше текстовое поле куда-то вложено:

EditMenuItem -> FindMenuItem -> SearchTextBoxHere

Вы бы вызвали метод HideDropDown() меню Правка для события keydown вашего текстового поля:

EditMenuItem.HideDropDown();
...