用复选框模拟单选框
普通用户可以忽略本节问题。
我们知道通过将RadioButton(单选框)放在不同的容器中,可以对其进行分组,同一容器中的多个单选框,其选中状态是互斥的,选中一个单选框,之前选中的同组单选框将被自动撤销选中状态。
这有一个问题,就是在打印窗口的时候,容器中的控件是不会打印的,所以所有的RadioButton必须直接置于窗口中,但只这样一来就不能对RadioButton分组。
这个问题是无解的,RadioButton置于容器中可以分组,但是不能打印,置于窗口中可以打印,但是不能分组。
我们只能用折中的方案来解决这个问题,用CheckBox(复选框)来模拟RadioButton,通过设置代码,使得选择某个复选框后,取消同一分组其它复选框的选中状态。
例如在窗口加入6个CheckBox,其中CheckBox1、CheckBox2、CheckBox3为一组,CheckBox4、CheckBox5、CheckBox6为一组,为了实现RadioButton的效果,可以在窗口的全局事件CheckedChanged加入代码:
Dim
nm As String = e.Sender.Name再次提示,上述代码必须设置在窗口的全局事件CheckedChanged中,而不是单个控件的CheckedChanged事件中。
上述代码是针对非绑定状态的CheckBox,如果CheckBox已经绑定到列,那么请参考:逻辑列的排他式选择