以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 用复选框模拟单选框 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=7259) |
-- 作者:狐狸爸爸 -- 发布时间:2010/6/1 9:45:00 -- 用复选框模拟单选框 用复选框模拟单选框
我们知道通过将RadioButton(单选框)放在不同的容器中,可以对其进行分组,同一容器中的多个单选框,其选中状态是互斥的,选中一个单选框,之前选中的单选框将被自动撤销选中状态。
我们只能用折中的方案来解决这个问题,用CheckBox(复选框)来模拟RadioButton,通过设置代码,使得选择某个复选框后,取消同一分组其它复选框的选中状态。
例如在窗口加入6个CheckBox,其中CheckBox1、CheckBox2、CheckBox3为一组,CheckBox3、CheckBox4、CheckBox5为一组,为了实现RadioButton的效果,可以在窗口的全局事件CheckedChanged加入代码:
Dim nm As String = e.Sender.NameSelect Case nm Case "CheckBox1","CheckBox2","CheckBox3" If e.Sender.Checked Then e.Form.Controls("CheckBox1").Checked = (nm = "CheckBox1") e.Form.Controls("CheckBox2").Checked = (nm = "CheckBox2") e.Form.Controls("CheckBox3").Checked = (nm = "CheckBox3") End If Case "CheckBox4","CheckBox5","CheckBox6" If e.Sender.Checked Then e.Form.Controls("CheckBox4").Checked = (nm = "CheckBox4") e.Form.Controls("CheckBox5").Checked = (nm = "CheckBox5") e.Form.Controls("CheckBox6").Checked = (nm = "CheckBox6") End If End Select
再次提示,上述代码必须设置在窗口的全局事件CheckedChanged中,而不是单个控件的CheckedChanged事件中。
上面的代码需要5.31更新,因为只有5.31更新全局事件才包括ItemChanged。 [此贴子已经被作者于2010-6-1 9:48:12编辑过]
|
-- 作者:blackzhu -- 发布时间:2010/6/1 9:54:00 -- 学习 |
-- 作者:i52117 -- 发布时间:2010/6/1 9:56:00 -- 收藏 |
-- 作者:yangming -- 发布时间:2010/6/1 11:10:00 -- 学习! |
-- 作者:fubblyc -- 发布时间:2014/6/28 18:55:00 -- 谢谢狐爸,正好需要!! [此贴子已经被作者于2014-6-28 18:55:25编辑过]
|