2012-09-07 26 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(); 
     } 

希望它可以幫助...