Ich arbeite an einem MDI
Winforms-Projekt, ich möchte Benutzer verwendet F3 Verknüpfung, um ein Suchformular in jedem wo in der Anwendung zu öffnen, so habe ich folgende verwendet Code in meinem MDI
Eltern Formular und legen Sie die KeyPreview
der Mutterform true
:Definieren Sie eine Verknüpfung, die in allen Formen einer Win-Formular-Anwendung funktioniert
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (keyData == (Keys.F3)) {
//Show search form
return true;
}
return base.ProcessCmdKey(ref msg, keyData);
}
die Verknüpfung funktioniert in MDI
Eltern und Kind Formen, aber wenn ich eine Form von einem MDI
Kind Formulare öffnen mit .ShowDialog()
die Abkürzung ‚doesn t arbeiten in der letzten Form, in dem anderen Wort, die Abkürzung, arbeitet in childForm
:
//in the parent form
var childForm = new Form1();
childForm.MdiParent = parentForm;
childForm.KeyPreview = true;
childForm.Show();
aber funktioniert nicht in grandChildForm
Form:
//in the child form
var grandChildForm = new Form2();
grandChildForm.KeyPreview = true;
grandChildForm.ShowDialog();
Wie kann ich das Problem lösen, ohne ProcessCmdKey()
Verfahren in allen Formen zu wiederholen?