2014-09-04 4 views
0

폼로드 이벤트에 여러 개의 단추를 생성하려고합니다. 이를 위해 버튼 배열을 사용하고 있습니다. 각 버튼에 클릭 이벤트 핸들러가 있어야합니다. 거의 모든 곳에서 수색했지만 명확한 해결책을 찾을 수 없습니다. 어떤 도움을 주시면 감사하겠습니다. 코드 아래동적으로 생성 된 컨트롤의 이벤트를 처리하는 방법은 무엇입니까?

Private Sub Home_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
    Dim tableLayoutPanel = New System.Windows.Forms.TableLayoutPanel() 
    tableLayoutPanel.ColumnCount = 5 
    tableLayoutPanel.RowCount = 1 

    Dim BtnArray(5) As Button 

    For i As Integer = 0 To BtnArray.Length-1 

     tableLayoutPanel.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 20)) 
     tableLayoutPanel.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100)) 

     tableLayoutPanel.Controls.Add(BtnArray(i), i, 0) 
    Next 
    GroupBox1.Controls.Add(tableLayoutPanel) 
End Sub 
+1

해결됩니다. 이벤트는 항상 '버튼'을 클릭하는 것과 같은 방법으로 발생합니다. – jmcilhinney

답변

0

확인, 그것은 질문을 인상하지 방법, 이벤트를 처리하는 방법은 문제

Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles 
          MyBase.Load 
    Dim tableLayoutPanel = New System.Windows.Forms.TableLayoutPanel() 
    tableLayoutPanel.ColumnCount = 5 
    tableLayoutPanel.RowCount = 1 
    Dim BtnArray(5) As Button 
    For i As Integer = 0 To BtnArray.Length - 1 
     tableLayoutPanel.ColumnStyles.Add(New 
      System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 20)) 
     tableLayoutPanel.RowStyles.Add(New 
      System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100)) 
     BtnArray(i) = New Button 
     BtnArray(i).Name = "Button" + i.ToString 
     AddHandler BtnArray(i).Click, AddressOf Button_Click 
     tableLayoutPanel.Controls.Add(BtnArray(i), i, 0) 
    Next 
    GroupBox1.Controls.Add(tableLayoutPanel) 
End Sub 

'Event which is call when button is click 
Private Sub Button_Click(sender As System.Object, e As System.EventArgs) 
    MsgBox(sender.name) 
End Sub 
관련 문제