2017-01-30 83 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 .... 等 –