2011-01-28 103 views
1

我想從我的窗體的按鈕單擊事件調用一個共享的全局事件處理程序。如何將額外的參數傳遞給我的事件處理程序?

public void button21_Click(object me, EventArgs MyArgs) { 
    button17_Click(me, MyArgs); /// WORKS! 
} 

我想要做的是將我的XML傳遞給方法。

喜歡的東西:

public void button21_Click(object me, EventArgs MyArgs) { 
    button17_Click(me, MyArgs, MyXmlString); /// ERROR! 
} 

我並不總是需要在button17_Click()方法XML,只有當按下button21。

我該怎麼做?

+0

你的朋友肯定能說流利的「網絡英語」。但這只是您之前問題的重複。你從昨天開始沒有取得任何進展嗎? – bzlm 2011-01-28 19:56:32

+1

如何按下按鈕? – 2011-01-28 19:57:08

+1

@ AS-CII悲傷按鈕從不被點擊。 http://www.mp3-to-m4r.net/images/sad-button.png – bzlm 2011-01-28 19:58:27

回答

3

我不會嘗試直接調用你的事件處理程序,將它留給事件本身。

你應該做的是將button17的邏輯移動到一個單獨的方法中,然後調用該方法。

private void button17_Click(object sender, EventArgs e) 
{ 
    // call the newly created method instead (with the XML argument null) 
    HandleClickOperation(null); 
} 

private void button21_Click(object sender, EventArgs e) 
{ 
    // call the newly created method instead (with the XML argument set) 
    HandleClickOperation(MyXmlString); 
} 

private void HandleClickOperation(string xmlString) 
{ 
    if (xmlString == null) 
    { 
     // do things unique to button17 behavior 
    } 
    else 
    { 
     // do things unique to button21 behavior 
    } 
    // the logic that was in button17_Click() 
} 
4

您不會將XML(或其他任意數據類型)傳遞給.NET中的事件處理程序。他們有一個特殊的簽名,這就是你必須使用的。

您不應該從button21_click調用button17_click。相反,試試這個:

public void button17_Click(object sender, EventArgs e) 
{ 
    CommonFunctionality(); 
} 

public void button21_Click(object sender, EventArgs e) 
{ 
    CommonFunctionality(); 
} 

private void CommonFunctionality() 
{ 
    // In here, place the code that used to be in button17_click 
} 

你可能會需要創建一個版本,可以使用XML的通用功能。

2

OK,這個問題比昨天好一點,BU我們依然無法看到:

  • 是什麼button17_Click
  • 爲什麼button17_Click的事件處理程序的聲明?
  • 爲什麼它是'全球'事件處理程序?
  • 這是什麼意思'全球'在這裏?
  • 它是你的代碼(你可以改變button17_Click)?
  • ...

和一切需要形成一個答案或建議。

相關問題