its*_*e86 41
按钮控件具有可以调用的PerformClick()方法.
button1.PerformClick();
Run Code Online (Sandbox Code Playgroud)
Tom*_*Bot 22
.NET框架使用一种模式,其中每个事件X
都有一个protected void OnX(EventArgs e) {}
引发事件的方法X
.看到这篇Msdn文章.要从声明类外部引发事件,您必须派生类并添加公共包装器方法.在Button
它的情况下它看起来像这样:
class MyButton : System.Windows.Forms.Button
{
public void ProgrammaticClick(EventArgs e)
{
base.OnClick(e);
}
}
Run Code Online (Sandbox Code Playgroud)
Cᴏʀ*_*ᴏʀʏ 15
您可以直接调用事件处理函数并指定null
发送方和EventArgs.Empty
参数.
void ButtonClicked(object sender, EventArgs e)
{
// do stuff
}
// Somewhere else in your code:
button1.Click += new EventHandler(ButtonClicked);
// call the event handler directly:
ButtonClicked(button1, EventArgs.Empty);
Run Code Online (Sandbox Code Playgroud)
或者,您可以将逻辑从ButtonClicked
事件中移出到自己的函数中,然后您的事件处理程序和您拥有的其他代码将依次调用新函数.
void StuffThatHappensOnButtonClick()
{
// do stuff
}
void ButtonClicked(object sender, EventArgs e)
{
StuffThatHappensOnButtonClick();
}
// Somewhere else in your code:
button1.Click += new EventHandler(ButtonClicked);
// Simulate the button click:
StuffThatHappensOnButtonClick();
Run Code Online (Sandbox Code Playgroud)
后一种方法的优点是可以将业务和UI逻辑分开.你真的不应该在你的控件事件处理程序中有任何业务逻辑.
是的,只需按照您呼叫任何其他方式的方式调用该方法.例如:
private void btnSayHello_Click(object sender, EventArgs e)
{
MessageBox.Show("Hello World!");
}
private void btnTriggerHello_Click(object sender, EventArgs e)
{
btnSayHello_Click(null, null);
}
Run Code Online (Sandbox Code Playgroud)