2017-01-30 87 views
-1

我有一个面板,其中我可以添加一组组合框和文本框。我想从我的数据库中添加项目到动态添加的组合框。如何添加项目以动态添加组合框?添加组合框项目动态添加控件

这是我的代码,用于从按钮单击动态添加组合框。

Dim number As Integer = 2 
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
    Dim itemCombobox As New ComboBox 
    itemCombobox.Name = "itemCombobox" + number.ToString 
    itemCombobox.Location = New Point(25, number * 29) 
    itemCombobox.Size = New Point(113, 23) 
    itemCombobox.DropDownStyle = ComboBoxStyle.DropDownList 

    Dim qtyTxtbox As New MaskedTextBox 
    qtyTxtbox.Name = "qtyTxtbox" + number.ToString 
    qtyTxtbox.Location = New Point(172, number * 29) 
    qtyTxtbox.Size = New Point(37, 20) 

    Dim specsBtn As New ComboBox 
    specsBtn.Name = "specsBtn" + number.ToString 
    specsBtn.Location = New Point(236, number * 29) 
    specsBtn.Size = New Point(113, 23) 
    specsBtn.DropDownStyle = ComboBoxStyle.DropDownList 

    Dim bmCombobox As New ComboBox 
    bmCombobox.Name = "bmCombobox" + number.ToString 
    bmCombobox.Location = New Point(385, number * 29) 
    bmCombobox.Size = New Point(113, 23) 
    bmCombobox.DropDownStyle = ComboBoxStyle.DropDownList 

    Panel8.Controls.Add(itemCombobox) 
    Panel8.Controls.Add(qtyTxtbox) 
    Panel8.Controls.Add(specsBtn) 
    Panel8.Controls.Add(bmCombobox) 
    number = number + 1 

End Sub 

这是我的功能项添加到itemcombobox

Private Sub load_item1() 
    Dim conn As New MySqlConnection 
    conn.ConnectionString = "server=127.0.0.1; username=root; [email protected]; database= atos_db" 
    Dim reader As MySqlDataReader 
    Try 
     conn.Open() 
     Dim query As String 
     query = "select * from atos_db.item_tbl" 
     comm = New MySqlCommand(query, conn) 
     reader = comm.ExecuteReader 
     While reader.Read 
      Dim sItem = reader.GetString("item") 
      itemCombobox1.Items.Add(sItem) 
     End While 
     conn.Close() 
    Catch ex As MySqlException 
     MessageBox.Show(ex.Message) 
    Finally 
     conn.Dispose() 
    End Try 
End Sub 

我如何获得值为每个动态添加控件?

回答

0

您的变量“itemCombobox”在方法“Button1_Click”中声明,因此他不能在您的方法“load_item1”中使用。 要做到这一点,你必须声明你作为全局变量在您的CLASSE,如:

 Dim itemCombobox As New ComboBox 
    Dim number As Integer = 2 
     Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
     itemCombobox.Name = "itemCombobox" + number.ToString 
     itemCombobox.Location = New Point(25, number * 29) 
     itemCombobox.Size = New Point(113, 23) 
     itemCombobox.DropDownStyle = ComboBoxStyle.DropDownList 

     Dim qtyTxtbox As New MaskedTextBox 
     qtyTxtbox.Name = "qtyTxtbox" + number.ToString 
     qtyTxtbox.Location = New Point(172, number * 29) 
     qtyTxtbox.Size = New Point(37, 20) 

     Dim specsBtn As New ComboBox 
     specsBtn.Name = "specsBtn" + number.ToString 
     specsBtn.Location = New Point(236, number * 29) 
     specsBtn.Size = New Point(113, 23) 
     specsBtn.DropDownStyle = ComboBoxStyle.DropDownList 

     Dim bmCombobox As New ComboBox 
     bmCombobox.Name = "bmCombobox" + number.ToString 
     bmCombobox.Location = New Point(385, number * 29) 
     bmCombobox.Size = New Point(113, 23) 
     bmCombobox.DropDownStyle = ComboBoxStyle.DropDownList 

     Panel8.Controls.Add(itemCombobox) 
     Panel8.Controls.Add(qtyTxtbox) 
     Panel8.Controls.Add(specsBtn) 
     Panel8.Controls.Add(bmCombobox) 
     number = number + 1 

     Dim theButton As Button 
     theButton = New Button 
     theButton.Location = location 
     theButton.Text = label 
     AddHandler theButton.Click, AddressOf Me.btn_clicked 

    End Sub 

和梅索德load_item1()使用这个变量:

Private Sub load_item1() 
    Dim conn As New MySqlConnection 
    conn.ConnectionString = "server=127.0.0.1; username=root; [email protected]; database= atos_db" 
    Dim reader As MySqlDataReader 
    Try 
     conn.Open() 
     Dim query As String 
     query = "select * from atos_db.item_tbl" 
     comm = New MySqlCommand(query, conn) 
     reader = comm.ExecuteReader 
     While reader.Read 
      Dim sItem = reader.GetString("item") 
      itemCombobox.Items.Add(sItem) 
     End While 
     conn.Close() 
    Catch ex As MySqlException 
     MessageBox.Show(ex.Message) 
    Finally 
     conn.Dispose() 
    End Try 
End Sub 

Private Sub btn_clicked(ByVal sender As System.Object, ByVal e As System.EventArgs) 
    Dim selectedBtn As Button = sender 
    MsgBox("you have clicked button " & selectedBtn.Name) 
End Sub 
+0

我的问题是我想要做这样的事情 itemCombobox + number.toString.items.add(sItem) 这样我就可以在添加的控件中添加列表了。 –

+0

如果您按照我的回答中的描述更改您的代码,则可以将该项添加到动态添加的组合框中 –

+0

对不起,我仍是一名学生,但我还不太了解。 代码的输出将是这样的.. itemCombobox2,itemCombobox3,itemCombobox3 .... bmCombobox2,bmCombobox2,bmCombobox3 .... 等 –