Добавить ярлыки / горячие клавиши для форм, загружаемых в панель - PullRequest
0 голосов
/ 30 октября 2018

У меня есть MainForm, содержащая панель, которая используется для загрузки (y) другой формы. Вот как я это делаю.

private void Button1_Click(object sender, EventArgs e) 
{
    panel3.Controls.Clear();
    AnotherForm anotherForm = new AnotherForm();
    anotherForm.TopLevel = false;
    anotherForm.Location = new Point(anotherForm.Location.X, anotherForm.Location.Y);
    panel3.Controls.Add(anotherForm);
    anotherForm.Show();
}

Теперь я хочу добавить ярлыки для активации некоторых textboxes, но код просто не работает. Это то, что я пробовал и работает в обычных условиях (не открывается внутри панели)

private void AnotherForm_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode.ToString() == "A")
        MessageBox.Show("asdf");
}

Также рамки 4.5. Пожалуйста, помогите.

1 Ответ

0 голосов
/ 30 октября 2018

Forms не отвечает на событие KeyDown, пока их свойство KeyPreview не установлено на true. Поэтому вам нужно установить для свойства AnotherForm s KeyPreview значение true:

Получает или задает значение, указывающее, будет ли форма получать ключевые события до того, как событие будет передано в элемент управления с фокусом.

Также для того, чтобы это работало, вам нужно форсировать фокус формы, вызывая метод Focus после Application.OpenForms следующим образом: *

...
panel1.Controls.Add(anotherForm);
anotherForm.Show();
Application.OpenForms[anotherForm.Name]?.Focus();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...