2012-09-07 28 views
1

我有一个功能private void change(),我想运行时,我将按下一个按钮。我有Button schimbare = new Button();,如果我按,运行该功能。我有一些问题button.Click事件

我尝试schimbare.Click += change();,但不工作。什么是好的命令?

这是代码:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 
using System.Drawing; 

namespace Programarii 
{ 
    class InputBoxOptiuni 
    { 
     static TextBox textBox1 = new TextBox(); 

     /// <summary> 
     /// Displays a dialog with a prompt and textbox where the user can enter information 
     /// </summary> 
     /// <param name="title">Dialog title</param> 
     /// <param name="promptText">Dialog prompt</param> 
     /// <param name="value">Sets the initial value and returns the result</param> 
     /// <returns>Dialog result</returns> 
     public static DialogResult Show(string title, string promptText, string informati, string mesaj, ref int ora, ref int minut30, ref int minut15, ref int douaore, ref int minut10, ref int minut5, ref int pornire2, ref int anuntare2, ref int cuparola, ref string parola, ref string email, ref int expirare, ref int cateminute, ref int vl, ref int culimba, string scurtaturi, string scurtaturi2, string format, ref int tipformat) 
     { 

Button schimbare = new Button(); 

schimbare.Click += change; 

} 

     private void change(object sender, EventArgs e) 
     { 

     } 
    } 
} 

对于这一切回答我,TNX。

我尝试:

private void change(object sender, EventArgs e) and schimbare.Click += change; 

,但不起作用。我尝试与schimbare.Click += (s,e)=> { //your code };和工作!

回答

3

你的方法的签名应该是这样的:

void change(object sender, EventArgs e)

,写为schimbare.Click += change;

,你也可以使用这个语法

schimbare.Click += (s,e)=> 
      { 
       //your code 
      }; 
+0

Tnx,我尝试了secound方法并且完美地工作。 Tnx再次! – AnDr3yy

1

尝试

schimbare.Click += new EventHandler(this.change); 

又见this link以获取更多信息。

+1

如果change'没有参数,这个意志的'签名也失败。 – Oded

+0

是的,确实如此。我向他提供了一个链接,详细解释点击事件。 – akluth

+0

它会更有用,如果你解释它... – Oded

2

() - 你是订阅将事件处理程序,而不是调用它(使用()将调用change)。

schimbare.Click += change; 

需要注意的是(除了非标命名),你change功能应该有EventHandler签名(它没有 - 它不带参数),将其更改为:

private void change(object sender, EventArgs e) 
+0

不要工作。错误! – AnDr3yy

+0

@ AnDr3yy - “不要工作”不是很具描述性。什么错误? – Oded

+0

我试着用'private void change(object sender,EventArgs e)'和'schimbare.Click + = change;'但我有一个错误。现在使用'schimbare.Click + =(s,e)=> { //您的代码 }; ' – AnDr3yy

0

等待,等待!您将“更改”方法的返回值添加到Click事件中!因此,将代码更改为此应该可以解决您的问题(括号是额外的!)。我不知道你所在的平台,请注意,点击代表必须有一些参数。

干杯

schimbare.Click += change; 
0

你需要捕捉这样的事件:

private void schimbare_Click(object sender, EventArgs e) 
     { 
      change(); 
     } 

希望它可以帮助...