環境:Visual Studio 2005 C# Windows Application
フォームに自作のユーザコントロールを貼り付けてそのイベントを取得する勉強をしているものです。
フォームでのユーザコントロールイベントを取得して処理をする方法が分かりません。
状況
ユーザコントロールにはテキストボックスを追加しています。
また、フォームにそのユーザコントロールを追加しています。
確認したいことは、ユーザコントロールのテキストボックスになにか値を入力したタイミングでチェンジイベントをフォーム側で察知し、処理をするというものです。
どなたか、要点だけでもいいので教えていただけないでしょうか?
宜しくお願いいたします。
No.1ベストアンサー
- 回答日時:
外部用のdelegateとコントロールで発生するイベント、内部コントロールで発生するイベントの関連付けを行いましょう
コントロール側のソースのclass定義の外で
public delegate void ChangeEventHandler(object sender, EventArgs e);
といったデリゲートを設置します
コントロールのクラス定義の中で
// 外部で使うイベント名を定義 ... Changedを使用
public event ChangeEventHander Changed;
// 内部で発生したイベントを外部に知らせる
protected void OnChange( EventArgs e )
{
// 外部のイベントハンドラが接続されているなら
if ( Changed != null ) {
Changed( this, e )
}
}
private textBox1_TextChanged(object sender, EventArgs e)
{
// 内部のイベントハンドラを呼び出す
OnChaned(e);
}
といった記述になります
利用する側では
デザイナでコントロールを選択してプロパティウィンドウをイベントタブに切り替えて『Changed』ハンドラを追加するか
コードで
private void OnChanged(object s, EventArgs e)
{
MessgeBox.Show("sampel");
}
private void Form_Load(object sender, EventArgs e)
{
// コントロールのChangedイベントハンドラの設定
UserControl1.Changed += new ChangeEventHandler( OnChanged )
}
といった具合にします
この回答への補足
早速のご回答ありがとうございました。
コーディングして動作を確認することができました。
コーディングしていて確認させていただきたいことが出てきたので
教えていただけないでしょうか?
1.ユーザコントロール.テキストボックスの入力値を取得したい場合
(1)public delegate void ChangeEventHandler(object sender, EventArgs e, string inputValue);
(2)TextAChanged(this, e,this.textBox1.Text);
Changed( this, e ,this.textBox1.Text)
(3)private void OnChanged(object s, EventArgs e, string inputValue)
とすればようろしいでしょうか?それとも他に良い実装方法があるのでようか?
2.異なる event であっても引数が同じであれば delegate の定義は一つでよろしいでしょうか?
度々の質問申し訳ありません。宜しくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) google formsを使ったタスク依頼フォーム作成におけるご相談 1 2023/06/22 15:55
- サーバー Windowsサーバでグループを検索したい 1 2023/04/17 15:30
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- Excel(エクセル) コントロールにリンクするセルが選択されない 3 2022/06/12 14:37
- ルーター・ネットワーク機器 NUROのルータF660Aについて 2 2022/09/07 11:44
- その他(開発・運用・管理) ユーザ権限でソフトを起動すると必ず管理者パスワードをきかれてうまく利用できない 3 2022/05/10 00:07
- Visual Basic(VBA) VB.net フォーム 親子 1 2022/07/04 19:00
- Android tar.ファイルのインストールについて知りたいです 2 2022/07/23 15:34
- Access(アクセス) Access の SetFocus について教えてください 5 2022/08/04 07:32
- ASP・SaaS Slackの料金体系に詳しい方教えてください 2 2022/09/03 17:27
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
C# ユーザコントロール内のボタン押下を親で知る
その他(プログラミング・Web制作)
-
C#で親にイベントを投げる方法
C言語・C++・C#
-
コンボボックスの高さを変更したい。
C言語・C++・C#
-
-
4
DataGridViewのチェックボックスのON、OFFの判定方法
C言語・C++・C#
-
5
Loadイベント中にほかのイベントを発生したくない
その他(プログラミング・Web制作)
-
6
大量のデータを読み込んで表示する速度を改善したい
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル・VBA CheckBoxのオブ...
-
カメラスクロールするのを動画...
-
エクセルVBAでオプションボタン...
-
C#で自分のウインド・ハンド...
-
chr関数の呼び出しで「プロ...
-
excelのリストボックスで選択し...
-
fpSpreadコントロール ライセ...
-
(VBA)スピンボタンの大量...
-
エクセル コントロールツール...
-
ユーザーフォームで動的(Me.Con...
-
Groupboxの配下のコントロール...
-
エクセルVBAユーザーフォーム・...
-
winndws セキュリティ
-
TreeGridView(オープンソース)...
-
ExcelVBAでListViewが使用できない
-
vb.netで画面のコントロールId...
-
Labelコントロールの(左右)余...
-
変数をコントロール型で使用す...
-
複数のコマンドボタン(VBAで)...
-
With~EndWithの省略部分と引数...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
カメラスクロールするのを動画...
-
エクセル・VBA CheckBoxのオブ...
-
全てのオブジェクトのプロパテ...
-
EXCELでactivexコントロールを...
-
エクセルVBAでオプションボタン...
-
vb.netで画面のコントロールId...
-
コンボボックスの文字によるif...
-
ListViewのチェックボックスに...
-
フォーム上の現在アクティブな...
-
変数をコントロール型で使用す...
-
ExcelVBAでListViewが使用できない
-
ユーザーフォームで動的(Me.Con...
-
コントロールを移動できない
-
C#で角が丸いテキストボックス
-
アクセス特有の書き方?
-
間違えて配置してしまったコン...
-
OCXって何ですか?
-
'ckbl' コントロールは作成され...
-
VBAのフォームでTextBoxがいっ...
-
ActiveX DLL と ActiveXコント...
おすすめ情報