2012-03-29 15 views
1

フォームに複数回追加できるカスタムコントロールがあります。このカスタムコントロールは、同じフォームに複数回現れることがあります。これらのコントロールは、ユーザーによって追加および削除されます。ユーザーはカスタムコントロール内のあるコントロールを右クリックしてメニューを表示できます。カスタムコントロールからのイベントの発生をフォームに動的に追加

このメニューからアイテムを選択するときは、フォーム上でイベントを発生させる必要があります。カスタムイベントを作成し、コントロールが動的に追加された場合は使用できないことに気付きました。フォームはそれを認識しないためです。存在しないコントロールを参照するイベントハンドラを追加することはできません。それを知るためにフォームを必要としないカスタムコントロールからフォーム上のイベントを発生させる他の方法はありますか?ちなみに、私のカスタムコントロールはFlowLayoutPanelに追加されています。 助けてくれてありがとう!

答えて

3

コントロールを追加すると、コード内のイベントハンドラがワイヤリングされます。

MyButton.Click += ButonClickEventHandler; 
Page.Controls.Add(MyButton) 
+0

ありがとう、私はそれがそれより複雑であると思った。それは私の問題を完全に解決しました。 – Fjodr

0

ベンと同意してください。そうでなければ、あなたのコントロールがどのように設定されているかによっては、やっかいなやり方があります。たとえばINotifyPropertChanged InerfaceやWindows APIメッセージ(およびリスナー)を介して - しかし、あなたが非常に奇妙なセットアップをしていない限り、ベンは言ったように、単にコントロールを追加するときにハンドラを追加します。ジェネリックコールバックメソッドを使用してカスタムイベント引数を使用して、それがトリガされたものを特定することができます。

関連する問題