0

当单击表单上的 197 个复选框中的任何一个时,我想运行一个代码块。我有一个数组中的所有复选框,我用来检查表单加载时每个座位的可用性(这个程序是一个座位预订系统)。每个座位都是一个显示为按钮的复选框,我希望“选定的座位”标签在选中后显示选定的座位。我在下面的代码中使用了相同的数组来检查它们是否被选中,如果它们被选中,标签将被更新。当我单击其中一个复选框时,下面的代码给了我一个错误,描述为“对象引用未设置为对象的实例”。我不确定为什么会这样,我真的找不到解决方案。我现在只对前三个复选框进行编码,只是为了看看它是否有效。

如果有人有一个很棒的解决方案!谢谢。

Public Class frmSeatPlan

Dim seat(11, 20) As Control

Private Sub A1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles A1.CheckedChanged, A2.CheckedChanged, A3.CheckedChanged

    seat(1, 1) = A1
    seat(1, 2) = A2
    seat(1, 3) = A3

    For y = 1 To 1
        For x = 1 To 3
            Dim seat(y, x) As CheckBox
            If seat(y, x).Checked = True Then
                selectedSeats = selectedSeats & seat(y, x).Name & ", "
                MsgBox(selectedSeats)
                lblSelected.Text = selectedSeats
            End If
        Next x
    Next y



End Sub
4

1 回答 1

0

你要写句柄子句 197 次吗?你能确定你完成的时候没有犯错吗?如果你在#156 和#157 之间添加一个#198 座位怎么办?你会如何绕过它?您正在逐渐为自己计划一场维护噩梦。相反,您应该在代码中绑定事件,您还可以在其中创建这些复选框。这样,您将永远不会遇到您遇到的问题。

For y = 1 to 3
  For x = 1 to 3
    Dim chk As New CheckBox
    'set positioning on the screen
    chk.X = x
    chk.Y = y
    AddHandler chk.CheckedChanged, AddressOf Any_CheckedChanged
  Next
Next

理想情况下,您也不需要数组,即seat(y, x),因为每个座位在创建时都可以分配 X 和 Y,并将它们作为事件参数传递(因此您可能需要自定义事件)。

于 2013-05-05T23:14:08.217 回答