0

説明するのはちょっと難しいですが、次のようなことをする方法はありますか?

control1.ShownEditor += EventHandler;

...

control2.ShownEditor += control1.ShownEditor; //wrong
4

3 に答える 3

2

イベントをEventHandlerデリゲートに保存します。

EventHandler Myevent = () => {/*event handling code here*/};

イベントハンドラデリゲートをコントロールイベントに割り当てます

control1.ShownEditor += Myevent;
control2.ShownEditor += Myevent;
于 2012-10-13T15:08:19.517 に答える
2

バインドするには、このようなものが必要だと思いますEventHandler。ハンドラーがあるので、それをイベントに簡単にバインドできます。

于 2012-10-13T15:12:53.150 に答える
1

簡単に言うと、コントロールのイベントを使用して別のイベントに割り当てることはできません。EventHandlerしたがって、これは不可能です。

control2.ShownEditor += control1.ShownEditor; //wrong

唯一の方法は、EventHandler個別に作成して、両方のコントロールのイベントに割り当てることです。

別の有害な解決策は、を介してデリゲートを抽出することですがReflection、実際には危険であると述べたように、Hans Passantによるこの回答を見てください。あるコントロールからイベントハンドラーを「盗んで」、別のコントロールに渡すことは可能ですか?

于 2012-10-13T15:28:35.563 に答える