如何手动执行button_click?

时间:2014-02-21 08:05:07

标签: c# winforms click

在C#上 - 我有一个按钮。当我双击按钮然后它会自动创建功能

 private void button_Click(object sender, EventArgs e).

这很好用。

我的问题是:如何手动执行此功能? 我想在构造函数中运行一次?

6 个答案:

答案 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();

See MSDN

答案 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);