从函数中调用按钮事件
本文关键字:按钮 事件 调用 函数 | 更新日期: 2023-09-27 18:14:53
我想在函数中调用一个按钮事件,如下所示,这可能不是正确的方式。如果你有想法如何绕过这个,请分享一些关于如何实现它的样本。由于
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
const int WM_KEYDOWN = 0x100;
const int WM_SYSKEYDOWN = 0x104;
if ((msg.Msg == WM_KEYDOWN) || (msg.Msg == WM_SYSKEYDOWN))
{
switch (keyData)
{
case Keys.Down:
button4_Click(sender, e); //error: sender and e does not exist in the current context
break;
}
}
return base.ProcessCmdKey(ref msg, keyData);
}
试试这个:
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
const int WM_KEYDOWN = 0x100;
const int WM_SYSKEYDOWN = 0x104;
if ((msg.Msg == WM_KEYDOWN) || (msg.Msg == WM_SYSKEYDOWN))
{
switch (keyData)
{
case Keys.Down:
button4_Click(null, null);
break;
}
}
return base.ProcessCmdKey(ref msg, keyData);
}
为什么不将button4_Click
代码移动到其他方法,如ProcessSomething()
,并在那里进行处理。然后修改
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
const int WM_KEYDOWN = 0x100;
const int WM_SYSKEYDOWN = 0x104;
if ((msg.Msg == WM_KEYDOWN) || (msg.Msg == WM_SYSKEYDOWN))
{
switch (keyData)
{
case Keys.Down:
ProcessSomething();
break;
}
}
return base.ProcessCmdKey(ref msg, keyData);
}
你可以通过传递null来触发button4_Click
方法,但在我看来,像这样触发事件并不优雅。
调用button4 click
,将自己作为发送方,并将新的System EventArgs
作为第二个参数:
button4_Click(button4, new System.EventArgs());