2016-11-15 136 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 
相关问题