2015-08-20 58 views
0

你好,我有这个代码的问题...我从我的数据库ID和名称,我添加每一行在一个新的RadioButton,但我怎么可以把ID与msgbox onclick?代码是这样的:VB.net动态单选按钮添加事件onclick

Imports MySql.Data.MySqlClient 

Public Class Order_info 
Dim conn As New MySqlConnection 
Dim sqlcommand As New MySqlCommand 
Dim regDate As Date = Date.Now() 
Dim strDate As String = regDate.ToString("dd MMMM yyyy") 
Dim dbdate As String = regDate.ToString("yyyy-M-dd") 
Dim RButton As RadioButton 

Private Sub Order_info_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
    Label1.Text = strDate 
    connect() 
End Sub 

Private Sub connect() 
    If Not conn Is Nothing Then conn.Close() 
    conn.ConnectionString = String.Format("server={0};user id={1}; 
              password={2};database={3}; pooling=false", 
              My.Resources.DatabaseIP, 
              My.Resources.DatabaseUsername, 
              My.Resources.DatabasePassword, 
              My.Resources.DatabaseName) 
    Try 
     conn.Open() 

     sqlcommand.Connection = conn 
     Dim stm As String = "SELECT o.id,s.name,o.status FROM orders o INNER JOIN supplier s ON s.id = o.id_supplier where datetim = '" + dbdate + "'" 
     Dim cmd As MySqlCommand = New MySqlCommand(stm, conn) 
     Dim reader As MySqlDataReader = cmd.ExecuteReader() 
     Dim x As Integer = 25 
     Dim y, p As Integer 
     Do While reader.Read() 
      RButton = New RadioButton 
      RButton.Name = "RadioButton" + x.ToString 


      RButton.Text = reader.GetString(1) 
      RButton.Top = y 
      y += x 
      p += 1 
      If (reader.GetInt32(2) = 1) Then 
       RButton.BackColor = Color.LightGreen 
      End If 
      Panel1.Controls.Add(RButton) 
     Loop 

     reader.Close() 

    Catch ex As Exception 
     MsgBox(ex.Message) 
    End Try 
    conn.Close() 
End Sub 
End Class 
+0

你要处理的'RadioButton'点击或确定'RadioButton'是在不同的按钮,选择点击? – shf301

回答

2

你为它们制作一个事件处理程序 - 它们都使用同一个。您只需要从签名中投下sender对象以确定选择了哪一个。我也会为每个迭代创建一个新的RadioButton对象。 A FlowLayoutPanel将使添加RB变得更容易 - 您不必手动设置位置。

Do While reader.Read() 
     Dim RButton As New RadioButton 
     RButton.Name = "RadioButton" + x.ToString 
     RButton.Text = reader.GetString(1) 
     RButton.Top = y 
     y += x 
     p += 1 
     If (reader.GetInt32(2) = 1) Then 
      RButton.BackColor = Color.LightGreen 
     End If 
     Addhandler RButton.Click, AddressOf RB_Clicked 
     'or use the CheckChanged event 
     Panel1.Controls.Add(RButton) 
    Loop 
    '... rest of your code 

的事件处理程序:

Private Sub RB_Clicked(sender As Object, e As EventArgs) 
    Dim rb As RadioButton = DirectCast(sender, RadioButton) 
    'now rb is the one that was clicked 
End Sub 
+0

CheckedListBox可能值得寻找(空间和布局明智)... @OP – Plutonix

+0

作品完美! thx人 –