我有 16 个按钮,我正在生成一个 1 - 16 之间的随机数字,但我不知道如何使用我生成的数字来访问变量。我尝试了“Button”+ Order(Ord),但无法访问变量的属性。
Sub game()
Order(Ord) = ((15 * Rnd()) + 1)
Console.Text = Order(Ord)
test = Order(Ord)
Target = "Button" + test
Ord = Ord + 1
End Sub
如果您有按钮列表,则可以随机选择一个列表条目。
如果将所有按钮放在一个面板中,则可以更轻松地使它们井井有条:例如,您可以让 VB.NET 选择该面板中的所有按钮。
对于随机数生成器,最好使用 .NET Random 类而不是旧的 VB Rnd() 函数。您只需要它的一个实例,因此它可以与主窗体同时创建。
请启动一个新的 VB.NET Windows 窗体项目,将名为“TheButtonPanel”的面板添加到默认窗体,并在面板中添加任意数量的按钮(仅用于测试)。
我为每个按钮添加了一个简单的处理程序,因此您可以看到一些让代码代替您完成工作的可能性。
Public Class Form1
Public rand As New Random()
Public theButtons As List(Of Button)
Sub Game()
Dim nButtons = theButtons.Count()
Dim n = rand.Next(0, nButtons)
Dim selectedButton = theButtons(n)
selectedButton.PerformClick()
End Sub
Private Sub bnClick(sender As Object, e As EventArgs)
Dim bn = DirectCast(sender, Button)
MessageBox.Show(bn.Text)
End Sub
Private Sub Init()
theButtons = TheButtonPanel.Controls.OfType(Of Button).ToList()
' An example of doing something with the buttons:
For Each bn In theButtons
AddHandler bn.Click, AddressOf bnClick
Next
' Other initialisation code.
End Sub
Private Sub Form1_Shown(sender As Object, e As EventArgs) Handles MyBase.Shown
Game()
End Sub
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Init()
End Sub
End Class
当您运行它时,它将显示表单并自动单击随机按钮,单击处理程序将显示按钮的 .Text 属性的值(因为我想将 something 放入
Game()
方法中)。您仍然可以单击按钮来运行单击处理程序。
最后,尝试为控件提供比“TheButtonPanel”等更具描述性的名称。