2011-01-28 11 views
1

フォームのボタンクリックイベントから共有グローバルイベントハンドラを呼び出そうとしています。イベントハンドラに余分な引数を渡すにはどうすればよいですか?

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

私がしたいことは、自分のXMLをメソッドに渡すことです。私はいつもbutton21が押されているのみbutton17_Click()メソッドでXMLを必要としない

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

:よう

何か。

どうすればいいですか?

+0

あなたの友人は確かに "インターネットの英語"に堪能です。しかし、これはあなたの以前の質問と重複しているだけです。あなたは本当に昨日以来進歩していませんか? – bzlm

+1

どのようにボタンを押し下げることができますか? –

+1

@ AS-CII悲しいボタンは決してクリックされません。 http://www.mp3-to-m4r.net/images/sad-button.png – bzlm

答えて

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() 
} 
+0

これは間違っていません! –

+0

私の友人は、HadleClickOperationではなくbutton17_Click_Auxを使ってこのようなことを教えてくれました。 –

+0

@PRASHANT:自由に名前を付けることができます。私はちょうどあなたのコードが実際に行ったことを知らなかったので、私はそれに総称を与えました。重要な点は、このメソッドをイベントハンドラとして直接使用しないことです。 –

4

.NETでは、XML(または他の任意のデータ型)をイベントハンドラに渡すことはありません。彼らは特定の署名を持っており、それはあなたが使用しなければならないものです。

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我々はまだ見ることができません。

  • なぜEventHandlerはbutton17_Clickあるbutton17_Click
  • の宣言は何ですか?
  • なぜグローバルなイベントハンドラですか?
  • ここで「グローバル」とはどういう意味ですか?
  • あなたのコードです(button17_Clickを変更できますか?)
  • ...

そして、すべてのことを答えたりアドバイスを形成するために必要とされます。

+0

彼は今、 'button21_Click'までです;-) –

関連する問題