编辑
加强解释
因为有一个复选框
Click
只要您
改变
其状态(即
Value
属性),无论是在UI上还是通过代码执行。
假设首先取消选中所有复选框,然后单击
R00_CheckBox
一个:
它触发了它的
点击
事件处理程序,而不实际更改
状态
任何复选框,即
R00_复选框
刚刚检查(即设置为
True
点击
事件处理程序),而所有其他复选框都已设置为
False
然后单击
R01_CheckBox
:
-
它触发了它的
点击
第一条语句为的事件
R00_CheckBox = False
但是
R00_复选框
现在的
状态
是
真的
,因此此触发器
R00_CheckBox_Click
事件
那么你现在已经到了
暂停
事件处理和启动新的
R00_复选框_单击
一
它的第一个声明是
R00_CheckBox=错误
但是
R00_复选框
现在的
状态
是
真的
,因此您更改其
状态
到
错误
因此
悬
当前事件处理程序处理并切换到
R00_复选框_单击
一
他的第一句话是
R00_CheckBox = True
,然后再次更改其
状态
从…起
错误
到
真的
因此
暂停
现在的
R00_复选框_单击
事件处理和启动一个全新的
现在的潮流
R00_复选框_单击
事件再次开始
R00_CheckBox=真
R00_复选框
状态
,因此这一次它不会再次触发自身,并继续执行下一条语句,即
R01_CheckBox = False
状态
R01_复选框
因此
暂停
现在的
R00_复选框_单击
事件并开始新的
R01_CheckBox_Click
一
现在的潮流
R01_复选框_单击
事件再次开始
R00_CheckBox=错误
,发生了变化
R00_复选框
状态
R00_复选框_单击
暂停
它本身正在开始另一个全新的
R00_复选框_单击
…然后,然后。。。
你会的
很
更好地切换到
OptionButton
控件,其行为正是您想要的:选中其中一个控件时,其他所有控件都将自动取消选中。没有所有递归事件处理程序调用
您可以通过查询其默认值来获取其状态
价值
If Me.OptionButton1 Then ... '<--| check if OptionButton1 control is checked