【问题标题】:C# - No overload for method (takes 0 arguments)C# - 方法没有重载(需要 0 个参数)
【发布时间】:2013-10-19 14:18:29
【问题描述】:

我在一个项目中有这段小代码:

private void textBox1_TextChanged(object sender, EventArgs e)
{
    button2_Click();
}

private void button2_Click(object sender, EventArgs e)
{
    x = 0;
}

现在,我想调用 button2_Click 方法,但我不能,因为我必须传递参数。

问题是,我不知道调用方法时要传递什么参数。

我应该通过什么?

【问题讨论】:

    标签: c# methods arguments overloading


    【解决方案1】:

    这样使用

    private void textBox1_TextChanged(object sender, EventArgs e)
    {
        button2_Click(this.button2,EventArgs.Empty);
    }
    
    private void button2_Click(object sender, EventArgs e)
    {
        x = 0;
    }   
    

    只是把它当作普通参数。但这不是推荐的。最佳实践是提取 button2_Click 的主体并调用 Extract 方法。button2_Click 应始终由用户界面触发。例如:

    private void textBox1_TextChanged(object sender, EventArgs e)
    {
       method();
    }
    
    private void button2_Click(object sender, EventArgs e)
    {
        method();
    }   
    public void method(){
      //x=0 or other
      ....
    }
    

    【讨论】:

      【解决方案2】:

      没关系,我只是用过:

      button2_Click(sender, e)
      

      它成功了。

      【讨论】:

      • 不酷,您在按钮单击事件中获得了一个文本框作为发件人。这不是任何人所期望的。更好地使用 button.PerformClick()
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-26
      • 1970-01-01
      相关资源
      最近更新 更多