为面板中加载的表单添加快捷键/热键

时间:2018-10-30 08:14:46

标签: c# .net winforms

我有一个MainForm,其中包含一个用来加载其他表格的面板。 这就是我的做法。

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 :(得分:0)

Forms不会响应KeyDown事件,直到其KeyPreview属性设置为true。因此,您需要将AnotherForm的{​​{1}}属性设置为true:

  

获取或设置一个值,该值指示在将事件传递给具有焦点的控件之前,表单是否将接收键事件。

此外,为了使此方法有效,您需要通过在KeyPreview之后调用Focus方法来强制表单焦点,如下所示::

Application.OpenForms