C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: ユーザーコントロール間のイベント通知


(過去ログ 108 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■64372 / inTopicNo.1)  ユーザーコントロール間のイベント通知
  
□投稿者/ nikoniko (1回)-(2012/11/29(Thu) 22:54:18)

分類:[.NET 全般] 

いつもお世話になっております。

開発環境:WindowsXP / VS2010 / VB


ユーザーコントロールを2つ(UserControl1,UserControl2)を作成。
UserControl1の中にUserControl2がコントロールの1つとして入っています。
UserControl1からイベントを発生させ、UserControl2で取得する方法はあるでしょうか?

UserControl1側
Public Event Changed(ByVal sender As System.Object, ByVal e As System.EventArgs)

Private Sub a(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
RaiseEvent Changed(sender, e)
End Sub

UserControl2側
Dim WithEvents Tester1 As UserControl1

Private Sub showCategory(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Tester1.Changed
'処理
End Sub



引用返信 編集キー/
■64373 / inTopicNo.2)  Re[1]: ユーザーコントロール間のイベント通知
□投稿者/ Jitta (21回)-(2012/11/29(Thu) 23:36:25)
Jitta さんの Web サイト
No64372 (nikoniko さん) に返信
> ユーザーコントロールを2つ(UserControl1,UserControl2)を作成。
> UserControl1の中にUserControl2がコントロールの1つとして入っています。

 UserControl1 が Usercontrol2 のコンテナになっているのですよね?
そうすると、UserControl1 は、UserControl2 のインスタンスを知っていますよね?
そうすると、UserControl1 で発生するイベントのハンドラーと同じシグニチャーのメソッドを UserControl2 に用意して、
Usercontrol1 の適切な場所で AddHandler にて結びつけてやれば良いのではないでしょうか。
引用返信 編集キー/
■64374 / inTopicNo.3)  Re[2]: ユーザーコントロール間のイベント通知
□投稿者/ nikoniko (2回)-(2012/11/29(Thu) 23:54:23)
No64373 (Jitta さん) に返信
>  UserControl1 が Usercontrol2 のコンテナになっているのですよね?
> そうすると、UserControl1 は、UserControl2 のインスタンスを知っていますよね?
> そうすると、UserControl1 で発生するイベントのハンドラーと同じシグニチャーのメソッドを UserControl2 に用意して、
> Usercontrol1 の適切な場所で AddHandler にて結びつけてやれば良いのではないでしょうか。

ご回答いただきありがとうございます。
AddHandler については、知らなかったので試してみたいと思います。
引用返信 編集キー/
■64376 / inTopicNo.4)  Re[1]: ユーザーコントロール間のイベント通知
□投稿者/ shu (106回)-(2012/11/30(Fri) 07:47:23)
2012/11/30(Fri) 07:48:36 編集(投稿者)

No64372 (nikoniko さん) に返信

> UserControl2側
> Dim WithEvents Tester1 As UserControl1
>
> Private Sub showCategory(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Tester1.Changed
> '処理
> End Sub
WithEvents でUserControl1の変数Tester1 が定義されイベント割り付けされているので
Tester1 をパブリックプロパティまたはTester1自体をパブリックにしてUserControl1上のコードでUserControl2のインスタンス
作成後パブリックプロパティに設定するかまたはTester1に直接UserControl1のインスタンス(Me)を設定すると出来ます。
もちろんAddHandlerによる方法でもよいです。その場合Tester1 の定義にWithEventsはいらなくなりHandlesもいらなくなります。
引用返信 編集キー/
■64423 / inTopicNo.5)  Re[2]: ユーザーコントロール間のイベント通知
□投稿者/ nikoniko (3回)-(2012/11/30(Fri) 22:41:40)
No64376 (shu さん) に返信
> 2012/11/30(Fri) 07:48:36 編集(投稿者)
>
> ■No64372 (nikoniko さん) に返信
>
>>UserControl2側
>> Dim WithEvents Tester1 As UserControl1
>>
>> Private Sub showCategory(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Tester1.Changed
>> '処理
>> End Sub
> WithEvents でUserControl1の変数Tester1 が定義されイベント割り付けされているので
> Tester1 をパブリックプロパティまたはTester1自体をパブリックにしてUserControl1上のコードでUserControl2のインスタンス
> 作成後パブリックプロパティに設定するかまたはTester1に直接UserControl1のインスタンス(Me)を設定すると出来ます。
> もちろんAddHandlerによる方法でもよいです。その場合Tester1 の定義にWithEventsはいらなくなりHandlesもいらなくなります。

Jittaさん、shuさんありがとうございます。
助かりました。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -