Vb.net Windows窗体中的Chexbox ChekState功能
我需要一个复选框,该复选框将询问用户:“您需要添加地址吗?”如果用户单击该复选框,则地址标签和文本框将显示在表单上(我的意思是默认情况下它们不可见,然后我更改了此状态),我已经通过CheckboxSate事件实现了此功能,但是如果用户根本没有点击复选框,在这种情况下,在提交外部详细信息后,我无法前进(我的意思是在点击下一步按钮后,我的表单不会调用另一个子表单,但当我选中/取消选中复选框时,它会正常工作),是否有任何方法可以编辑/更新表单验证或任何默认复选框属性以摆脱此包?以下是我的CheckState事件的代码:Vb.net Windows窗体中的Chexbox ChekState功能,vb.net,forms,Vb.net,Forms,我需要一个复选框,该复选框将询问用户:“您需要添加地址吗?”如果用户单击该复选框,则地址标签和文本框将显示在表单上(我的意思是默认情况下它们不可见,然后我更改了此状态),我已经通过CheckboxSate事件实现了此功能,但是如果用户根本没有点击复选框,在这种情况下,在提交外部详细信息后,我无法前进(我的意思是在点击下一步按钮后,我的表单不会调用另一个子表单,但当我选中/取消选中复选框时,它会正常工作),是否有任何方法可以编辑/更新表单验证或任何默认复选框属性以摆脱此包?以下是我的CheckSt
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”,这一事实表明您已经为同一事件创建了两个处理程序。在这里发布之前,您需要花一些时间阅读和调试代码。如果你愿意的话,一两个断点会告诉你很多。