从字符串访问变量

问题描述 投票:0回答:1

我有 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 variables
1个回答
0
投票

如果您有按钮列表,则可以随机选择一个列表条目。

如果将所有按钮放在一个面板中,则可以更轻松地使它们井井有条:例如,您可以让 VB.NET 选择该面板中的所有按钮。

对于随机数生成器,最好使用 .NET Random 类而不是旧的 VB Rnd() 函数。您只需要它的一个实例,因此它可以与主窗体同时创建。

  • 注意:问题代码中的随机生成器将生成浮点数,如 11.2342 - 我怀疑你有一个带有该数字的按钮;)

请启动一个新的 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”等更具描述性的名称。

© www.soinside.com 2019 - 2024. All rights reserved.