[解決済み] ユーザーコントロールでイベントを作成し、メインフォームで処理させるには?
質問
カスタムユーザコントロールを持っていて、比較的簡単なことをしたいのですが、どうすればいいですか?
そのusercontrolの数値の上下の値が変わるたびに、メインフォームに表示ウィンドウを更新させる。
NUDがusercontrolになければ問題ないのですが、usercontrolではなくmainformでイベントを処理させる方法がわからないようです。
どのように解決するのですか?
ユーザーコントロールのイベントハンドラを作成し、ユーザーコントロール内からのイベントが発生したときに、そのイベントを発生させる必要があります。これにより、イベントをチェーン上にバブル化し、フォームからのイベントを処理することができます。
をクリックすると
Button1
をクリックすると
Button1_Click
をトリガーします。
UserControl_ButtonClick
をトリガーします。
ユーザーコントロールの
[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);
}
フォーム
UserControl1.ButtonClick += new EventHandler(UserControl_ButtonClick);
protected void UserControl_ButtonClick(object sender, EventArgs e)
{
//handle the event
}
注意事項
-
新しいバージョンの Visual Studio では
if (this.ButtonClick!= null) this.ButtonClick(this, e);
を使用することができます。ButtonClick?.Invoke(this, e);
を使うこともできます。これは基本的に同じことをしますが、より短くなります。 -
は
Browsable
属性は、Visual Studio のデザイナー (イベントビュー) でイベントを表示できるようにします。Category
はそれを "アクション" カテゴリに表示し、そしてDescription
はそれのための説明を提供します。これらの属性を完全に省略することもできますが、デザイナーが利用できるようにすると、VSが処理してくれるので、より快適です。
関連
-
[解決済み】「The breakpoint will not currently be hit」を改善するには?このドキュメントにはシンボルが読み込まれていません。" という警告はどうすれば改善されますか?
-
[解決済み】クロススレッド操作が有効でない。作成されたスレッド以外のスレッドからアクセスされたコントロール
-
[解決済み】WPFでXamlファイルにコメントを追加する方法は?
-
[解決済み】Unity 「関連するスクリプトを読み込むことができません」「Win32Exception: システムは指定されたファイルを見つけることができません"
-
[解決済み】C#のequal to演算子でtextとvarcharのデータ型は互換性がない
-
[解決済み] なぜList<T>を継承しないのですか?
-
[解決済み] Distinct() with lambda?
-
[解決済み] Windowsフォームアプリケーションで、アプリケーションの設定を保存するにはどうすればよいですか?
-
[解決済み] JavaScript / jQuery のイベントバインディングを Firebug などでデバッグするには?
-
[解決済み】大文字・小文字を区別しない「Contains(string)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] エンティティタイプ ApplicationUser は、現在のコンテキストのモデルの一部ではありません。
-
[解決済み】スクリプトクラスが見つからないので、スクリプトコンポーネントを追加できない?
-
解決済み] Critical error detected c0000374 - C++ dll returns pointer off allocated memory to C# [解決済み] Critical error detected c0000374 - C++ dll returns pointer off allocated memory to C#.
-
[解決済み】「入力文字列が正しい形式ではありませんでした」エラーの解決方法は?[重複しています]。
-
[解決済み】バックスラッシュを含むパス文字列のエスケープシーケンスが認識されない件
-
[解決済み】EF 5 Enable-Migrations : アセンブリにコンテキストタイプが見つかりませんでした
-
[解決済み】ランダムなブーリアンを生成する最速の方法
-
[解決済み】URLから画像をダウンロードする方法
-
[解決済み】パラメータ付きRedirectToAction
-
[解決済み】スレッド終了またはアプリケーションの要求により、I/O操作が中断されました。