我有一个文本框,想从另一个表单转发按键事件。
到目前为止我已经有了我的表格:
private readonly Action<KeyPressEventArgs> m_KeyPress;
public KeyboardForm( Action<KeyPressEventArgs> keyPress )
{
m_KeyPress = keyPress;
}
protected override void OnKeyPress( KeyPressEventArgs e )
{
m_KeyPress( e );
base.OnKeyPress( e );
}
以及一个派生的 TextBox,它初始化 Form:
var keyboardForm = new KeyboardForm( OnKeyPress );
keyboardForm.Show();
现在,OnKeyPress 方法将按预期调用(先调用 Form,然后调用 TextBox)。但尽管如此,什么也没有发生......当我按“a”时,我期望“a”出现在我的文本框中......
有谁知道这里有什么问题吗?
它不适用于KeyDown
,也附加到常规暴露事件KeyPress
也没有帮助我。我认为问题在于明确的调用OnKeyPress
。允许吗?
Form1:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
Form2 f = new Form2();
f.mEvent += new Form2.TestEvent(f_mEvent);
f.Show();
}
void f_mEvent(KeyPressEventArgs e)
{
textBox1.Text += e.KeyChar;
}
}
Form2:
public partial class Form2 : Form
{
public delegate void TestEvent(KeyPressEventArgs e);
public event TestEvent mEvent;
public Form2()
{
InitializeComponent();
}
protected override void OnKeyPress(KeyPressEventArgs e)
{
if (mEvent != null)
{
mEvent(e);
}
base.OnKeyPress(e);
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)