2016-09-28 21 views
0

noobクエリー私は、異なるボタンクリックイベントで異なるフォームを開くために単一のコマンドを使用する方法はありますか? 1つのフォームに24個のボタンがあり、これらのボタンを使用して24個の異なるフォームを開きます。VB.NETの異なるボタンで異なるフォームを開く

Private Sub BtnCh1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnCh1.Click 
    FormCh1.Show() 
End Sub 
Private Sub BtnCh2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnCh2.Click 
    FormCh2.Show() 
End Sub 
Private Sub BtnCh3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnCh3.Click 
    FormCh3.Show() 
End Sub 
Private Sub BtnCh4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnCh4.Click 
    FormCh4.Show() 
End Sub 

は、それが単一のコマンドで行うことができます。

はので、代わりのように24回のためにそれをやって?

+0

すべてのフォームを 'List(Of Form)'に追加し、各ボタンの 'Tag'プロパティにインデックスを追加し、すべてのボタンを同じイベントで設定し、' list(CType(送信者、ボタン).Tag) .Show() ' –

+0

@ Keith:' List(Of Form) 'にフォームを追加するにはどうしたらいいですか? – Prashant

+0

私は物事を読みやすくするために答えに追加します –

答えて

1

フォームのLoadイベントで、あなたのボタンのTagを設定しList(Of Form)

Private list As List(Of Form) 
Private Sub Me_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Me.Load 
    list = New List(Of Form) 
    list.Add(New Form1()) 
    ' 
    ' 
    ' 
    list.Add(New Form24()) 
End Sub 

にフォームを追加プロパティをフォームのインデックスに追加し、すべて同じクリックイベントを使用するように設定します。

Private Sub btn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn.Click 
    list(CType(sender, Button).Tag).Show() 
End Sub 
+0

チャームのような作品!キースありがとうございました.. – Prashant

-1

は、あなたの方法にすべてのハンドラをアタッチし、その後のSelect Caseをもとに、分岐行動:

Private Sub Button_Click_Handler(sender As Object, e As EventArgs) Handles Button66.Click, Button67.Click, Button68.Click 

    Dim btn As Button = DirectCast(sender, Button) 

    Select Case btn.Name 
     Case Button66.Name 
      Dim f1 As New Form1 
      f1.Show() 
     Case Button67.Name 
      Dim f2 As New Form2 
      f2.Show() 
     Case Button68.Name 
      Dim f3 As New Form3 
      f3.Show() 
    End Select 

End Sub 
+0

参照と比較できるときに名前と比較するのはなぜですか? –

+0

いいえ、理由はありません。私は彼らが名前と比較しない理由がない限り、うまくいくと思っています。 –

+1

参照比較は文字列の比較よりも高速です。私はあなたが 'Case Is ... 'を使って参考にして比較できると思ったが、実際にテストしたところ、うまくいきませんでした。そうすることができれば、多くのテキストを入力する必要はありませんでした。 - しかし、参照と文字列の比較で実際のテストを実行した後、 'Select Case'で文字列を比較することはかなり大きなボトルネックであることを知りました。参照:http://ideone.com/BCMEIR –

関連する問題