在C#上 - 我有一个按钮。当我双击按钮然后它会自动创建功能
private void button_Click(object sender, EventArgs e).
这很好用。
我的问题是:如何手动执行此功能? 我想在构造函数中运行一次?
答案 0 :(得分:3)
我的问题是:如何手动执行此功能?
不要手动执行按钮单击。它的目的是仅在按钮引发单击事件时执行。
我想在构造函数中运行一次?
提取您在此事件处理程序中的代码以分离方法并从c运行它 构造函数和处理程序:
public Form1()
{
InitializeComponent();
DoSomething();
}
private void button_Click(object sender, EventArgs e)
{
DoSomething();
}
private void DoSomething()
{
// extract handler code here
}
答案 1 :(得分:1)
你可以试试这个:
button_Click(button,new EventArgs());
或者你可以做
button.PerformClick();
答案 2 :(得分:0)
button.PerformClick();
答案 3 :(得分:0)
如果将代码从button_click转移到新函数并调用该函数,则效果会更好。像这样:
void MyFunc()
{
//code that was previously in button_click
}
private void button_Click(object sender, EventArgs e)
{
MyFunc();
}
void OtherFunction()
{
MyFunc();
}
答案 4 :(得分:-1)
该函数是一个事件处理程序:作为对事件的响应而执行的函数,在这种情况下是用户事件:用户单击了一个按钮。
如果您需要在不触发事件的情况下执行相同的操作,正确的方法是将执行操作的代码移动到单独的方法
private void ExecuteMyAction()
{
// Do stuff
}
private void button_Click(object sender, EventArgs e)
{
ExecuteMyAction()
}
然后你可以在构造函数中安全地调用该方法
public class MyClass
{
public MyClass()
{
ExecuteMyAction();
}
}
实际上,最好将代码保持在尽可能精简的处理程序中,并将执行该操作的代码移动到另一个方法。在处理程序中,您只需收集执行操作所需的信息,该操作仅在处理事件时可用,然后将该信息传递给负责处理该信息的系统的另一部分。
例如,如果您需要用户在用户单击按钮时在文本框中输入名称,button_click
处理程序应仅从文本框中获取字符串并调用保存该信息的方法,将字符串作为参数传递。
通过将执行操作(业务代码)的代码与命令执行操作的代码(依赖于您使用的框架的样板代码)保持分离,可以减少耦合。
答案 5 :(得分:-2)
您可以这样称呼它:
button_Click(this, EventArgs.Empty);