Application.Run()和按键事件
本文关键字:事件 Run Application | 更新日期: 2023-09-27 18:21:58
我有一个带有KeyPress事件的一些控件的窗体。例如:
private void MyTextBoxKeyPress(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
*****
}
}
从这个"父"表单,我称之为另一个表单:
Application.Run(new ChildForm());
现在我选择一个父窗体的控件并按下Enter按钮。但什么都没有?按键不拍摄事件
在这两种形式中,我都有:
KeyPreview=false;
我在这里做错了什么?如何以家长形式拍摄按键事件?
这对我来说很好,不同的是它是按键事件,所以它包含KeypressEventArgs
private void MyTextBoxKeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)Keys.Enter)
{
*****
}
}
用于键控事件
private void MyTextBoxKeyPress(object sender, KeyEventArgs e)
{
if (e.KeyValue == (char)Keys.Enter)
{
/*only use Apllication.run(..) in Application entry point when starting Application. it makes current thread to communicate with window and main thread is enough to do it .
* if Form layout is already there
*
*/
new Form2().Show();
/*
* if you want to make new Form programmatically and only resume from same line if form is closed
*
*/
Form form = new Form();
form.ShowDialog();
}
}
只使用1个Application.Run
(这是您的主窗体)。
您可以通过创建并显示其他表单来显示:
Form frm = new ChildForm();
frm.Show()
首先,u不能使用"Application.Run"来显示新表单。你应该使用froms的"Show"方法。下面的代码应该对您有所帮助。
我有两种你说的形式。第一个是名为"parentForm"的父窗体,第二个是childForm从parentForm调用childForm。"我调用了parentForm Load"并从parentForm为childForm设置事件委托,然后抓住按键。
private void parentForm_Load(object sender, EventArgs e)
{
childForm frm2 = new childForm();
frm2.KeyPress += frm2_KeyPress;
frm2.Show();
}
void frm2_KeyPress(object sender, KeyPressEventArgs e)
{
//some codes here about what to do
}
希望能帮助它…