http://f57.aaa.livedoor.jp/~jeanne/bbs/faq.cgi?mode=al2&namber=8456
↑こいつにちょっと反省。
FormAのボタン押したらFormBが開く。
そこでFormB上のボタンを押したらFormAにあるイベントハンドラに着火したい。
ってことですね。
僕は↓こう答えた:
Public Class FormA
' Button1が押されたらFormBを開く
Private Sub Button1_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs)
Handles Button1.Click
' FormBをこしらえ、
Dim b As New FormB
' bのButton1-ClickにオノレのButton2_Clickを掴ませる
AddHandler b.Button1.Click, AddressOf Button2_Click
' んでもって開く
b.ShowDialog()
End Sub
Private Sub Button2_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs)
Handles Button2.Click
TextBox1.Text = "素直なやつぅ..."
End Sub
End Class
回答つけた後で思ったんだけど、これは下策です。
FormB.Button1が未来永劫Button1だって保証はありませんし、
第一Form上のボタンなんて本来外に公開するもんじゃない。
だからちゃんとやるなら↓こうしたほうがよかろーね。
'------------ FormB.vb
Public Class FormB
' FormBに起こった出来事をobserverで掴ませておくれ
Public Sub AddObserver(ByVal observer As
System.EventHandler)
AddHandler Button1.Click, observer
End Sub
End Class
'------------ FormA.vb
Public Class FormA
' Button1が押されたらFormBを開く
Private Sub Button1_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs)
Handles Button1.Click
' FormBをこしらえ、
Dim b As New FormB
' bに起こるイベントにオノレのButton2_Clickを掴ませる
b.AddObserver(AddressOf Button2_Click)
' んでもって開く
b.ShowDialog()
End Sub
Private Sub Button2_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs)
Handles Button2.Click
TextBox1.Text = "素直なやつぅ..."
End Sub
End Class
「相手の腹を探っちゃダメ / やって欲しいことは'お願い'しよう」
オブジェクト指向のキモだよね。