Chiusura di una programmazione MenuStrip
Domanda
ho un MenuStrip che ho aggiunto a una forma, e in uno dei menu a discesa in esso, ho una casella di testo. Quando mi ha colpito entrare sulla casella di testo, voglio una funzione da eseguire, quindi il menu a chiudere. So come ottenere il immettere parte fatto, ma non ho idea di come chiudere il menu a discesa MenuStrip.
Soluzione
Nascondi del proprietario di chiamata il (). Ad esempio:
private void toolStripTextBox1_KeyDown(object sender, KeyEventArgs e) {
if (e.KeyData == Keys.Enter) {
e.SuppressKeyPress = true;
toolStripTextBox1.Owner.Hide();
}
}
Altri suggerimenti
Si può provare questo (ha lavorato per me)
for(int x = 0; x < menu.Items.Count; x++)
((System.Windows.Forms.ToolStripDropDownItem)menu.Items[x]).HideDropDown();
Questa è una vecchia questione, ma ho incontrato lo stesso problema e capito la soluzione, quindi per altri là fuori:
È necessario chiamare il metodo HideDropDown()
della voce del menu principale, a prescindere da come nidificato vostra casella di testo (o un altro controllo) è.
Per esempio, diciamo che si dispone di una striscia degli strumenti con File
, Edit
, Help
. Nel menu Edit
, avete il vostro testo da qualche parte nidificato:
EditMenuItem -> FindMenuItem -> SearchTextBoxHere
Si potrebbe chiamare il metodo HideDropDown()
del menu Edit evento KeyDown del testo:
EditMenuItem.HideDropDown();