2016-11-15 141 views
0

創建按鈕時,我想爲每個按鈕創建一個單擊事件。如何爲每個動態創建的按鈕創建點擊事件?這是我的代碼。它可以根據創建的第一個按鈕創建單個事件。爲vb.net中的動態按鈕創建多個點擊事件

Sub CreateDynamicButton() 
    Dim ButtonNumber As Integer = 1 
    Dim axisX As Integer = 53 
    Dim axisY As Integer = 13 
    ' Create a Button object 
    Do Until ButtonNumber = 11 
     Dim dynamicButton As New Button 
     ' Set Button properties 
     dynamicButton.Location = New Point(axisX, axisY) 
     dynamicButton.Height = 30 
     dynamicButton.Width = 200 
     ' Set background and foreground 
     dynamicButton.BackColor = Color.Beige 
     dynamicButton.ForeColor = Color.Black 
     dynamicButton.Text = "I am Dynamic Button" & ButtonNumber 
     dynamicButton.Name = "DynamicButton" & ButtonNumber 
     dynamicButton.Font = New Font("Georgia", 10) 
     AddHandler dynamicButton.Click, AddressOf dynamicButton_Click 
     ' Add Button to the Form. Placement of the Button 
     ' will be based on the Location and Size of button 
     Controls.Add(dynamicButton) 
     axisY = axisY + 35 
     ButtonNumber = ButtonNumber + 1 
    Loop 
    'Add Exit Button 
    Dim dynamicButtonExit As New Button 
    ' Set Button properties 
    dynamicButtonExit.Location = New Point(axisX, axisY) 
    dynamicButtonExit.Height = 30 
    dynamicButtonExit.Width = 200 
    ' Set background and foreground 
    dynamicButtonExit.BackColor = Color.Beige 
    dynamicButtonExit.ForeColor = Color.Black 
    dynamicButtonExit.Text = "Exit" 
    dynamicButtonExit.Name = "Exit" 
    dynamicButtonExit.Font = New Font("Georgia", 10) 
    AddHandler dynamicButtonExit.Click, AddressOf dynamicButtonExit_Click 
    ' Add Button to the Form. Placement of the Button 
    ' will be based on the Location and Size of button 
    Controls.Add(dynamicButtonExit) 
End Sub 
+0

[動態按鈕單擊事件處理程序]的可能重複(http://stackoverflow.com/questions/7375061/dynamic-button-click-event-handler) –

回答

0

您不需要創建多個事件來處理您的動態按鈕,dynamicButton_Click足以處理所有的點擊。最好給ID爲每個按鈕,你只需要做的就是在這種情況下,如下面的代碼做:

Dim btn As Button = DirectCast(sender, Button) 
If btn.ID = "DynamicButton1" then 
    'Do logic here for button 1 
End If 
0

你只需要加一點邏輯來處理在一個事件處理程序的每個按鈕的點擊。如果您使用「Select Case」語句,它也會保持整潔。

如果你對每個按鈕的邏輯大量的代碼,它可能會更好編寫不同的潛艇爲每個按鈕和在第二種情況下調用使用每個「案例」塊的適當子像塊

Private Sub DynamicButton_click(sender As Object, e As EventArgs) 
    Dim btn As Button = DirectCast(sender, Button) 
    Select Case btn.Name 
     Case "DynamicButton1" 
      MessageBox.Show("button1") 
     Case "DynamicButton2" 
      dynamicbutton2_Click(sender, e) 
    End Select 
End Sub 

Private Sub dynamicbutton2_Click(sender As Button, e As EventArgs) 
    MessageBox.Show("Button2") 
    'and lots of other code 
End Sub 
相關問題