ShowDialogされたボタンを判定するには?

解決


モモ  2008-12-16 01:40:52  No: 145514

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側で判定したいのです。
教えて下さい。
何卒よろしくお願い致します。


YuO  2008-12-16 01:57:07  No: 145515

Form2のコンストラクタやその他のメソッド,プロパティ等で,
どこから呼ばれたかについのて情報を渡しておけばよいのではないでしょうか。


やじゅ  2008-12-16 02:02:22  No: 145516

Form2にプロパティまたはフィールド変数をPublicにて作成
例 Public CallButton As String

senderにイベントコントロールが入ってくるので

Dim frmForm2 As New Form2
frmForm2.CallButton = DirectCast(sender,Button).Name


我龍院  2008-12-16 07:25:19  No: 145517

良いか悪いかは別にして、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


モモ  2008-12-16 18:17:01  No: 145518

お返事ありがとうございます。
Form2にプロパティ変数を定義して、
表示前にセットするようにしました。
ご回答頂きました皆様、ご協力ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加