ホームページ >バックエンド開発 >C++ >C# でユーザー コントロールからメイン フォームにイベントを伝達するにはどうすればよいですか?

C# でユーザー コントロールからメイン フォームにイベントを伝達するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-04 22:09:40698ブラウズ

How Can I Propagate Events from User Controls to the Main Form in C#?

ユーザー コントロールからメイン フォームへのイベントの伝播

ユーザー インターフェイスの設計では、多くの場合、カスタム コントロール内からメイン フォームにイベントを中継する必要があります。親フォームまたは親ウィンドウ。これを実現するには、イベント バブリングのメカニズムを作成し、制御されたイベントが上位レベルのコンテキストに到達できるようにする必要があります。

たとえば、数値のアップ/ダウン (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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。