0

フォーム FormA に検索と呼ばれるボタンがあります。このボタンをクリックすると、frmSearch が読み込まれます。frmSearch を動的にしたいので、「従業員を検索」ボタンで呼び出された場合、従業員などのみを検索します。発信者の ID またはタグを frmSearch に即座に入力できる方法はありますか?

これは私が現時点で持っているものですが、呼び出し元コントロールのみを識別します。(グローバル変数をインスタンス化して frmSearch から読み取ることもできますが、もっと良い方法があるかどうか疑問に思っています):

  Private Sub btnSearch_Click(sender As Object, e As EventArgs) Handles btnSearch.Click
        frmSearch.Show()

        Dim btn As Button = CType(sender, Button)
        MsgBox(btn.ToString)
        MsgBox("you have clicked button " & CType(CType(sender,  _
   System.Windows.Forms.Button).Tag, String))
    End Sub
4

1 に答える 1

2

formA では、コードは次のようになります

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim caller As String = DirectCast(sender, Button).Name
    Dim f As New frmSearch(caller)
    f.Show()
End Sub

検索フォームのデフォルトのインスタンスを使用していないことに注意してください。これは重要です。

検索フォームにこのコードを追加します

Dim whoCalled As String '<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Public Sub New(caller As String)
    InitializeComponent()
    whoCalled = caller
End Sub

変数 whoCalled には発信者の名前が含まれます。

データを渡さずにフォームを作成できないようにしたい場合は、検索フォームにも追加します

Private Sub New()
    ' This call is required by the designer.
    InitializeComponent()
End Sub

これにより、オーバーロードされたコンストラクターの使用が強制されます。

于 2013-06-21T12:14:52.963 に答える