VB,将变量传递给控件

时间:2015-02-26 15:01:00

标签: vb.net variables controls

我的任务是由我的老师在VB.net中创建一个电影预订系统。到目前为止,我创建了50个CheckBoxes,我试图将它们全部重命名为seat(number)。我在我的Form1.load中有这个代码,但它不起作用,因为它是一个类型而不是表达式。我尝试使用变量,但它不起作用。

这是我的代码:

        For count As Integer = 1 To 54 Step 1
            CheckBox(count).text = "Seat " & count
        Next

请帮助,或者推荐我另一种方法来实现这一目标。

2 个答案:

答案 0 :(得分:0)

在创建时设置复选框的名称。要找到如何以编程方式创建复选框,请在表单中添加一个复选框,然后查看.designer.vb

dim cb as new checkbox
cb.name = "1"
cb.text = "Seat 1"

您还需要添加位置和其他属性

如果您已经创建了名称为1,2的文本框,则迭代并获取如下数字:如果您将其称为CB_1,则在查找数字之前关闭CB_。

dim cbNumber as int16

For Each c As Control In myContainer.Controls
    If c.GetType() Is GetType(CheckBox) Then
       cbnumber = cint(c.name)
       c.text = "Seat" & cbnumber 
    End If
Next

答案 1 :(得分:0)

嗯,这是我的方法。为了测试表单上的FlowLayoutPanelButtonNumericUpDown

Option Strict On

Public Class Form1

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        For count As Integer = 1 To 54 Step 1
            ' Make a new CheckBox
            Dim chkBox As New CheckBox()
            ' Setup the Checkbox
            With chkBox
                .Tag = count.ToString
                .Name = CStr("seatCheckBox" & count.ToString)
                .Text = String.Format("Seat {0}", count)
                .ThreeState = False
                .Checked = False
            End With

            ' add an event listener for the checkbox checkstate changed event
            AddHandler chkBox.CheckStateChanged, AddressOf Me.CheckBox_CheckStateChanged

            ' Add the checkbox to the control
            Me.FlowLayoutPanel1.Controls.Add(chkBox)

            ' Keep the user from picking something that doesn't exist
            Me.NumericUpDown1.Maximum = CDec(count)
        Next

        ' Add and event listener for the find button click event
        AddHandler Button1.Click, AddressOf Me.FindButton_Clicked

    End Sub

    ' Find the checkbox in the form and return it
    Private Function GetCheckBox(ByVal seatNumber As Integer) As CheckBox
        Dim chkbox As CheckBox

        ' Try to find the Checkbox
        Try
            chkbox = TryCast(Me.Controls.Find(CStr("seatCheckBox" & seatNumber.ToString), True).First, CheckBox)
        Catch ex As Exception
            chkbox = Nothing
        End Try

        'Check if the trycast worked
        If IsNothing(chkbox) Then
            Throw New ArgumentOutOfRangeException("seatNumber", "The seat number to be searched for was not found")
        Else
            Return chkbox
        End If

    End Function

    ' Handle the Chekbox checkState event.
    Private Sub CheckBox_CheckStateChanged(sender As Object, e As EventArgs)
        ' Convert to Checkbox
        Dim chkBox As CheckBox = DirectCast(sender, CheckBox)

        ' Simple result string
        Dim resultstring As String = CStr("Seat Number {0} is now {1}.")

        ' Set the values
        Select Case chkBox.Checked
            Case True
                resultstring = String.Format(resultstring, chkBox.Tag, "taken")
            Case False
                resultstring = String.Format(resultstring, chkBox.Tag, "available")
        End Select

        ' Display it
        MsgBox(resultstring)
    End Sub

    Private Sub FindButton_Clicked(sender As Object, e As EventArgs)
        Try
            ' Get the checkbox and return it's name
            MsgBox(GetCheckBox(CInt(Me.NumericUpDown1.Value)).Name.ToString)
        Catch ex As Exception
            ' Display the error
            MsgBox(ex.Message)
        End Try
    End Sub
End Class