2014-02-15 57 views
0

我知道在Form.Designer.cs点击按钮的标准代码:如何从一个Form.Designer.cs变量传递给窗体

this.button1.Click += new System.EventHandler(this.button_Click); 

并在窗体的标准码:

private void button_Click(object sender, EventArgs e) 
     { 
     } 

将Form.Designer.cs中的变量传递给Form的方法是什么? 是否可以这样写:

private void button_Click(object sender, EventArgs e, int variable) 
     { 
     } 

在表单设计我试着写

this.button1.Click += new System.EventHandler(this.button_Click(,,1); 

,但它让我申报对象发件人和EventArgs的,和两个我不知道该怎么放。

回答

0

标准控件的事件处理程序的签名不能从.NET Framework程序员建立的标准中改变。
Button Click事件(以及标准控件的其他每个事件处理程序)总是接收两个参数,第一个是发件人(或者是发起事件的控件,第二个是简单的EventArg或另一个更复杂的类,需要详细信息来处理事件

你不能改变它 请记住,是调用该事件处理程序的框架代码,而不是你。框架怎么知道你想传递一个额外的变量并且改变它的代码可以随时适应您的请求吗?

如果您想在多个按钮之间共享相同的事件处理程序,可以通过多种方法来识别单击的按钮

首先,最干净的方式,每个按钮都有一个名字

private void button_Click(object sender, EventArgs e) 
{ 
    // I assume that only buttons are assigned to this event 
    Button btn = sender as Button; 
    if(btn.Name == "button1") 
     ,,,, 
    else 
     ... 
} 

另一种方式是通过Tag财产。您可以使用表单设计器或代码将此属性设置为您需要的值。 使用代码,你也可以设置标签属性的东西不是一个字符串

... 
MyClass c = new MyClass(); 
button1.Tag = c; 
.... 

private void button_Click(object sender, EventArgs e) 
{ 
    Button btn = sender as Button; 
    MyClass t = btn.Tag as MyClass 
    if(t != null) 
     ...... 
} 
0

添加另一种方法,最简单的方式做it.For例子里面你实现增加对事件处理这个方法更复杂:

private void button_Click(object sender, EventArgs e) 
{ 

} 

然后连接事件处理程序:

this.button1.Click += new System.EventHandler(this.button_Click); 

再加入另一种需要你想传递参数的方法:

private void button_ClickImpl(object sender, EventArgs e, int variable) 
{ 

} 

然后你button_Click事件里面,你可以调用此方法通过你的参数,例如:

private void button_Click(object sender, EventArgs e) 
{ 
    button_ClickImpl(sender, e, 2323); 
} 
相关问题