2017-02-22 4 views
0

に結合: ます。private void ButtonClick(オブジェクト送信者、EventArgsの電子)データは、私は、次のしているWindowsフォームやWPF

を私が作るために、パラメータリストに追加する場合: ます。private void ButtonClick(オブジェクト送信者、EventArgsのをe、Class c) それはすべての種類の問題を引き起こします。しかし、私は本当に必要な私のメインにしたい:

Class c = new Class(); 

をそして私はButtonClickが呼び出されるように、ボタンをクリックしたいと思いますが、私は実際に関数本体で「クラスC」へのアクセスを必要とするので、私本当に必要です

private void ButtonClick(object sender, EventArgs e, Class c) 

何とかコンパイルします。

クラスを静的にするなど他の方法でこの問題を回避しようとしましたが、リファクタリングが多すぎて他のエラーが発生します。

Windowsフォームでこれが可能かどうかわかりません。私は、XAMLとWPFに切り替えることに反対しないよ、私は可能になります

private void ButtontClick(object sender, EventArgs e, Class c) 

ような何かをやっていることを知ってほしいです。

+0

ここから、クラスcのインスタンスを渡していますか? –

+2

あなたが書いたタイトルとは対照的に、これはデータバインディングとは関係がないようです。マークされた重複はあなたが書いた質問文に答えます。あなたのケースでは、 'Button'Click + =(sender、e)=> ButtonClick(sender、e、c);'のように 'Click'イベントを購読することができます。 –

答えて

0

あなたのClass c変数を、あなたのButtonClickイベントハンドラがあるメインクラスのメンバ変数にするだけです。このButtonClickイベントハンドラが独自のカスタムイベントハンドラでない限り、ボタンのフレームワークのClickイベントハンドラにパラメータを追加することはできません。 Class c変数にメンバー変数としてアクセスするか、コマンドとコマンド・バインディングをコマンド・パラメーターとともに使用する必要があります。

0

Button.Tagプロパティにcを入力し、クリックイベントハンドラで((Button)sender).Tagを使用して取得することができます。

関連する問題