ダブルクリック用の特定のコードを実行した後に、リストボックスのセットのclickメソッドを呼び出そうとしています。ListBoxのDoubleClickメソッドでClickメソッドを呼び出す
Private Sub ListBox1_Click(sender As Object, e As System.EventArgs) Handles ListBox1.Click
' Do something 1
End Sub
Private Sub ListBox2_Click(sender As Object, e As System.EventArgs) Handles ListBox2.Click
' Do something 2
End Sub
Private Sub ListBoxes_DoubleClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.DoubleClick,
ListBox2.DoubleClick
' Do something for doubleclick
' Invoke Click method
Try
Dim result As Object = Me.GetType().InvokeMember(sender.name + "_Click",
BindingFlags.Default Or BindingFlags.Public Or BindingFlags.NonPublic Or BindingFlags.Instance Or BindingFlags.InvokeMethod,
Nothing, Nothing, New Object() {sender, Nothing})
Catch ex As Exception
End Try
End Sub
結果が「MissingMethodException」例外
Method MyProject1.Form1.ListBox1_Click not found
である。しかし、それはそこにある、VBを見て、それだけであり、上部に、あなたが見ることができませんか?
ありがとうございました。
は、あなたの答えに同意し、私の最初のアイデアでした。 しかし、アプリケーションで50個のリストボックスが好きで、時間が経つにつれて巨大なスイッチを実装したくないという場合があります。 " DirectCast(送信者、リストボックス).name = ListBox1の場合.nameのその後 DoSomething1() ELSEIF DirectCast(送信者、リストボックス).nameの= ListBox2.nameその後 DoSomething2() エンドそれでも 「 場合は、私が定義された形式ですべての私のdoSomethingに名前を付け、私の反射法を試すことができますとにかく、それがうまくいくかどうかを知らせます。 – Skippy
私はそれに同意します。あなたがたくさんのコントロールを持っているなら、それは過剰です。私をつけてください! – Natrium
私のリストボックスのクリックハンドラを変更するには、時間がかかりました。 私は何をしましたか: (1)listbox1_Click、listbox2_Click、...のコードをlistbox1Process、listbox2Process、...と呼ばれる専用の関数に移動しました (2)提案関数のようにイベント関数でこの関数を呼び出してください 3)InvokeMember(sender.name + "Process" )でリフレクションを使用すると動作します。 – Skippy