form1 と form2 の 2 つのフォームがあるとします。
vb.netのコーディングを使用して、別のフォームの特定のボタンをクリック、マウスオーバー(任意のイベント)するにはどうすればよいですか?
form1 と form2 の 2 つのフォームがあるとします。
vb.netのコーディングを使用して、別のフォームの特定のボタンをクリック、マウスオーバー(任意のイベント)するにはどうすればよいですか?
説明には多くの情報がないため、Form1 が Form2 を起動すると想定しています。
Form1 が起動すると、「button1」と「Launch Form 2」の 2 つのボタンがあります (button1 のテキストを変更するのを忘れてしまいました。申し訳ありません。:(
[Launch Form 2] をクリックすると、Form2 がポップアップします。
Form1 の「button1」をクリックすると、Form1 から発信されたメッセージ ボックスが次のように表示されます。
Form2 の "button1" をクリックすると、Form1 から発信されたメッセージ ボックスも表示され、次のように表示されます。
コードは次のとおりです。
フォーム1
Public Class Form1
Private WithEvents frm2 As New Form2
Private Sub Form1Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Form1Button.Click
RunSomeCode("Called from form 1!")
End Sub
Public Sub RunSomeCode(ByVal message As String)
MessageBox.Show(message)
End Sub
Private Sub Form1LaunchForm2Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Form1LaunchForm2Button.Click
frm2.Activate()
frm2.Show()
End Sub
Private Sub frm2_SimulateForm1ButtonClick() Handles frm2.SimulateForm1ButtonClick
RunSomeCode("Called from form 2!")
End Sub
End Class
フォーム2
Public Class Form2
Public Event SimulateForm1ButtonClick()
Private Sub Form2Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Form2Button.Click
RaiseEvent SimulateForm1ButtonClick()
End Sub
End Class
使い方
フォーム 2 には、「SimulateForm1ButtonClick」というパブリック イベントがあります。そのイベントは、任意のコード ブロックからいつでも発生させることができます。フォームのボタンをクリックすると、それを上げることにしました。
Form 1 には Form2 WithEventsのインスタンスがあります。WithEvents キーワードを使用しないと、Form2 のパブリック イベントが表示されないことが非常に重要です。:(
フォーム 1 には、フォーム 2 がそのボタンをクリックしたときに発生する「SimulateForm1ButtonClick」を処理するサブがあります。
ここで、もう 1 つの重要な詳細を説明します。Form1 で button1 がクリックされたときに実行されるコードは、実際には RunSomeCode() というプライベート サブルーチンにあります。Form1 の他の部分、つまり Form2 のイベントを処理する部分からコードにアクセスできるようになるため、これは重要です。
少しでもお役に立てば幸いです。あなたが何を求めていたのか正確にはわかりません。:/
イベントを発生させようとしている場合はForm2.Button1.PerformClick()
、フォーム 2 のボタンが「button1」と呼ばれていると仮定して使用してください。