Vb.net Windows窗体中的Chexbox ChekState功能

Vb.net Windows窗体中的Chexbox ChekState功能,vb.net,forms,Vb.net,Forms,我需要一个复选框,该复选框将询问用户:“您需要添加地址吗?”如果用户单击该复选框,则地址标签和文本框将显示在表单上(我的意思是默认情况下它们不可见,然后我更改了此状态),我已经通过CheckboxSate事件实现了此功能,但是如果用户根本没有点击复选框,在这种情况下,在提交外部详细信息后,我无法前进(我的意思是在点击下一步按钮后,我的表单不会调用另一个子表单,但当我选中/取消选中复选框时,它会正常工作),是否有任何方法可以编辑/更新表单验证或任何默认复选框属性以摆脱此包?以下是我的CheckSt

我需要一个复选框,该复选框将询问用户:“您需要添加地址吗?”如果用户单击该复选框,则地址标签和文本框将显示在表单上(我的意思是默认情况下它们不可见,然后我更改了此状态),我已经通过CheckboxSate事件实现了此功能,但是如果用户根本没有点击复选框,在这种情况下,在提交外部详细信息后,我无法前进(我的意思是在点击下一步按钮后,我的表单不会调用另一个子表单,但当我选中/取消选中复选框时,它会正常工作),是否有任何方法可以编辑/更新表单验证或任何默认复选框属性以摆脱此包?以下是我的CheckState事件的代码:

Private Sub AddAddress_CheckedStatrChange_1(sender As Object, e As EventArgs) Handles AddAddress.CheckStateChanged
If AddAddress.CheckState = CheckState.Checked Then
                AddAddressLabel.Visible = True
                AddAddressTextBox.Visible = True
                AddAddressTextBox.Enabled = True



            ElseIf AddAddress.CheckState = CheckState.Unchecked Then
                AddAddressLabel.Visible = False
                AddAddressTextBox.Visible = False
                AddAddressTextBox.Enabled = False

            End If
END Sub

这就是你要做的:

Sub AddFTP_CheckedChanged() Handles AddFTP.CheckedChanged
     AddAddressLabel.Visible = Not AddAddressLabel.Visible
     AddAddressTextBox.Visible = Not AddAddressTextBox.Visible
     AddAddressTextBox.Enabled = Not AddAddressTextBox.Enabled 'It's useless since it's not visible
End Sub

我会将此功能提取到一个单独的方法中,然后在加载表单时使用该方法。
CheckBox
控件具有
Checked
属性和
CheckState
属性。你用错了。仅当您关心所有三种状态时才使用
CheckState
,只有当您将
ThreeState
属性设置为
True
时才会如此。如果
ThreeState
False
则您只关心两种状态,因此仅使用
Checked
属性和
CheckedChanged
事件。如果使用正确的事件和属性,则根本不需要
If
语句<选中的代码>是
布尔值
,可见的代码也是
可见的
,因此您只需将一个分配给另一个,例如
AddAddressLabel.Visible=AddAddress.Checked
。该代码无论如何都没有意义。您正在处理
AddFTP
事件,然后使用
AddAddress
属性。您不仅处理了错误的事件,而且还处理了错误对象的事件。您的方法末尾有一个“_1”,这一事实表明您已经为同一事件创建了两个处理程序。在这里发布之前,您需要花一些时间阅读和调试代码。如果你愿意的话,一两个断点会告诉你很多。