我试图创建一个新的pos系统使用vb.net,但我是一个初学者。我有个问题。基本上,我使用一个在线sql数据库,管理员可以使用该数据库为pos添加不同类别的项目。因为所有的项目都存储在一个sql表中,所以我设法根据类别检索这些信息,并在pos系统上以按钮的形式显示它们。
现在的问题是,循环保存了与创建的不同按钮相关的所有信息,当我尝试从另一个按钮访问当前类别的值时,它似乎没有给我当前值,而是给我循环中更新的最后一个值。我在下面留下一个代码示例:
Imports MySql.Data.MySqlClient
Public Class Form13
Dim arr(100) As String
Public verifier(1) As Integer
Dim counter As Integer
Public value As String
Public Sub Form13_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim point As Integer
Dim point1 As Integer
point = 20
point1 = 100
counter = 0
Label2.Text = Form12.selected_value
Dim connection As New MySqlConnection
connection.ConnectionString = ("host=localhost;user=root;password=;database=pos;")
connection.Open()
Dim command As New MySqlCommand("select * from categories", connection)
Dim reader As MySqlDataReader
reader = command.ExecuteReader
While reader.Read()
Dim button As New Button
value = reader.GetString("category_name")
button.Name = value
button.Text = value
button.Height = 50
button.Width = 190
button.Font = New Font("arial", 11)
button.Location = New Point(point, point1)
Me.Controls.Add(button)
point1 = point1 + 50
counter = counter + 1
verifier(0) = counter
arr(counter) = value
AddHandler button.Click, AddressOf button_Click
button_Click()
End While
End Sub
Private Sub button_Click()
MsgBox(arr(counter))
End Sub
End Class
上面显示的代码是从mysql表中收集类别名称,然后重用一个按钮,直到为mysql表中所有现有类别名称创建了所有按钮。现在,我想要的结果是在按钮处理程序中以msgbox的形式单击相关按钮时获得类别的名称。任何帮助都将不胜感激。
sql表是使用xampp托管的,上面代码中使用的category表的屏幕截图如下所示:在这里输入图像描述
2条答案
按热度按时间6yjfywim1#
我使用sql server是因为在那里我有一个示例数据库。只需使用发件人的姓名或文本来查找所单击的类别按钮。
2vuwiymt2#
问题是,你有一个
String value
是一个被引用的对象。循环的每次迭代都会向字符串添加相同的引用。引用告诉程序在哪里查找ram中的值。同一对象的值在每次迭代中都会更新,因此每个条目都有相同的数据。您可以通过声明
Public value as String
在循环中。每次创建新引用时都是这样。删除此行:
更改此行:
收件人: