VB.NET2005です。
Form1側の”表示”ボタンクリックイベント内でShowDialogにて
Form2を表示しています。
Private Sub btnHyoji1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnHyoji.Click
Dim frmForm2 As New Form2
If frmForm2.ShowDialog(Me) = Windows.Forms.DialogResult.OK Then
〜
End If
End Sub
この時、表示されたForm2側からForm1のどのボタンで呼び出されたかを
判定することはできますでしょうか。
複数のイベントbtnHyoji1_Click、btnHyoji2_Click、btnHyoji3_Click…で
それぞれ同じForm2を呼び出すため、Form2側で判定したいのです。
教えて下さい。
何卒よろしくお願い致します。
Form2のコンストラクタやその他のメソッド,プロパティ等で,
どこから呼ばれたかについのて情報を渡しておけばよいのではないでしょうか。
Form2にプロパティまたはフィールド変数をPublicにて作成
例 Public CallButton As String
senderにイベントコントロールが入ってくるので
Dim frmForm2 As New Form2
frmForm2.CallButton = DirectCast(sender,Button).Name
良いか悪いかは別にして、VB2005からは確かデフォルトインスタンスが
復活しましたよね。
Public Class Form1
Public objCall As Object
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
objCall = sender
Form2.Visible = True
End Sub
End Class
等と呼び出し側で保持してれば良いんでは。
Form2で参照したい時は
Public Class Form2
Private Sub Form2_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
If TypeOf (Form1.objCall) Is Button Then
Console.WriteLine(DirectCast(Form1.objCall, Button).Name)
End If
End Sub
End Class
お返事ありがとうございます。
Form2にプロパティ変数を定義して、
表示前にセットするようにしました。
ご回答頂きました皆様、ご協力ありがとうございました。
ツイート | ![]() |