0

有一个真正困扰我的问题。我在面板控件中有 8 个复选框。该面板位于automation.vb[design] 文件中。在 Automation.vb 中,我做了一个简单的循环来遍历控件并检查选中了哪个框,并且它应该可以正常工作:

            For Each chk As CheckBox In pnlSelectedDays.Controls
                If chk.Checked Then
                   'do things
                End If
            Next

但是,当我需要签入另一个文件时,我有相同的结构,但控件从不具有检查状态,即使它们已被检查。在第一个文件中会很好,但在第二个文件中会出错:

    For Each day As CheckBox In Automation.pnlSelectedDays.Controls
        If day.Checked Then
            'do some more things
        End If
    Next

是因为我从不同的文件调用吗?我对winforms有点新,通常做c ++,所以不确定结构是否正常。如果没有,我是否只是在automation.vb 文件中创建一个共享的公共函数,以便其他文件可以调用它?

编辑:当在自动化表单上点击保存按钮时调用第一个示例。
第二个示例是从自动化表单的 OnClose 事件中调用的。

4

2 回答 2

1

这是我为您完成的一些代码,试一试...

Public Sub ClearFields()

    For Each ctrl As Control In Animation.GroupBox1.Controls
        If TypeOf ctrl Is Checkbox Then
          CType(ctrl, Checkbox).Checked = False
        End If
    Next ctrl

End Sub

这会给你一些东西,这是一个你可以在需要的地方调用的潜艇......

谢谢!

于 2013-01-10T08:51:29.970 回答
0

如果我没听错(我也在通话中),那么这听起来像是一个时间问题。在 form_load 中,复选框的值是在设计时分配的值。你是如何实例化、加载、显示第二个表单的?

于 2013-01-09T16:03:56.357 回答