ユーザー コントロールからメイン フォームへのイベントの伝播
ユーザー インターフェイスの設計では、多くの場合、カスタム コントロール内からメイン フォームにイベントを中継する必要があります。親フォームまたは親ウィンドウ。これを実現するには、イベント バブリングのメカニズムを作成し、制御されたイベントが上位レベルのコンテキストに到達できるようにする必要があります。
たとえば、数値のアップ/ダウン (NUD) コントロールを含むユーザー コントロールを考えてみましょう。 NUD の値が変更されると、それに応じてメイン フォームの表示ウィンドウが更新されるようにしたいと考えています。ただし、ユーザー コントロール内のイベントは通常、コントロール自体によって処理されます。
これに対処するために、コントロール内でイベントが発生したときにトリガーされるユーザー コントロールのイベント ハンドラーを作成します。そうすることで、イベントをチェーンを上ってメイン フォームに伝播できます。
C# での実装
ユーザー コントロール クラスで、次のイベントを定義します。 Button1_Click イベント。このイベントは、ユーザー コントロールのボタンがクリックされたときに発生します。イベントのイベント ハンドラーも定義します。
[Browsable(true)] [Category("Action")] [Description("Invoked when user clicks button")] public event EventHandler ButtonClick; protected void Button1_Click(object sender, EventArgs e) { //bubble the event up to the parent if (this.ButtonClick!= null) this.ButtonClick(this, e); }
メイン フォーム クラスで、ユーザー コントロールの ButtonClick イベントをサブスクライブします。ユーザー コントロールのボタンがクリックされると、メイン フォームの UserControl_ButtonClick イベント ハンドラーがトリガーされます。
UserControl1.ButtonClick += new EventHandler(UserControl_ButtonClick); protected void UserControl_ButtonClick(object sender, EventArgs e) { //handle the event }
このアプローチを使用することで、ユーザー コントロールからメイン フォームへのイベントの伝播が可能になります。により、ユーザー インタラクションへのシームレスな処理と応答が可能になります。
以上がC# でユーザー コントロールからメイン フォームにイベントを伝達するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。