gpt4 book ai didi

mysql - 使用按钮单击事件处理程序从另一个函数访问 VB.Net 循环中的值

转载 作者:行者123 更新时间:2023-11-29 16:44:34 25 4
gpt4 key购买 nike

我正在尝试使用 VB.Net 创建一个新的 POS 系统,但我是一个初学者。我有个问题。基本上,我使用在线 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 托管,上面代码中使用的类别表的屏幕截图如下所示: enter image description here

最佳答案

问题是,您有一个字符串值,它是一个引用的对象。您的循环在循环的每次迭代中都会添加对字符串的相同引用。该引用告诉您的程序在 RAM 中的何处查找该值。同一对象的值每次迭代都会更新,因此每个条目都具有相同的数据。

您可以通过在循环中将 Public 值声明为 String 来解决此问题。这样每次您创建新引用时都会如此。

删除此行:

Public value As String

更改此行:

value = reader.GetString("category_name")

至:

Dim value as String = reader.GetString("category_name")

关于mysql - 使用按钮单击事件处理程序从另一个函数访问 VB.Net 循环中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53162170/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com