checkbox唯一选择 C#如何实现多个checkbox只能唯一选择,并获得相应的数据?最好贴上代码!感谢!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用RadioButton吧http://msdn.microsoft.com/zh-cn/library/system.windows.controls.radiobutton.aspx 好像不通过代码只有用RadioButton。 将他们设置成为一组的,要用checkBox估计只能用代码设置他们的checked属性了,当一个为true时其他的为false就行了 服务器控件 findcontrolJS先全部不选种,再选种标记的. 既然要唯一选择 为什么要用CheckBox 不懂 最简单的方法:有多少个选项就拖多少个Panel进去,把checkbox放到panel上就行了原理:Checkbox的选择是根据组来确定的,如果不把这些checkbox放在一个组里就和Radiobutton的功能差不多了呵呵你以前不能多选,可能是都放在了窗体上,那么编译器会认为你的checkbox都属于Form这个组,因此不能单选 据说可以把checkbox的外观重绘成radiobutton的样子,我找了很多例子都没有试验成功过,有可能是种以讹传讹的帖子吧呵呵。不过你要按我的方法把CheckBox放在不同的组就行了。我有个项目就是这么做的 我可能理解错你的意思了,你的意思是一大堆checkbox,只能选中其中一个项对吗?这可以通过写代码来处理。我写个代码测试一下呵呵 1 RedioButton可以修改外观为Button样式2 CheckBox可以使用Mouse_Up mouse_Down事件实现,就是必须有一个且只有一个被选中。 用一个GroupBox 里面放几个RadioButton,数据就是RadioButton的Text属性string value="";foreach (Control ctl in groupBox.Controls) { if (((RadioButton)ctl).Checked == true) { value = ((RadioButton)ctl).Text; } } 使用一个CheckedChangedCheckBox chk=sender as CheckBox;for遍历设置其他为false 下班回家,刚帮你写的代码,测试通过呵呵using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;namespace testcheckbox{ public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void check_cb(CheckBox args_cb) { foreach (Control ctl in this.Controls) { //is操作符 : 检查一个对象是否兼容于其他指定的类型,并返回一个Bool值,永远不会抛出异常。此代码检验遍历的控件是否checkbox if (ctl is CheckBox) { //as操作符:与强制类型转换是一样的,但是永远不会抛出异常,即如果转换不成功,会返回null。此代码尝试将控件转换为checkbox CheckBox cb = ctl as CheckBox; //如果转换成功 if (cb != null) { //将复选框设为非选中状态 cb.Checked = false; } } } //将传参的复选框亦即点击的复选框设为选中状态 args_cb.Checked = true; } private void checkBox1_Click_1(object sender, EventArgs e) { check_cb(checkBox1); } private void checkBox2_Click(object sender, EventArgs e) { check_cb(checkBox2); } private void checkBox3_Click(object sender, EventArgs e) { check_cb(checkBox3); } private void checkBox4_Click(object sender, EventArgs e) { check_cb(checkBox4); } }}结贴给分吧 再次说明代码的意思:建立一个方法:private void check_cb(CheckBox args_cb)方法的参数是CheckBox类型的,args_cb参数表示点击的哪个按钮方法的逻辑我用注释给你标记清了,自己看看就能明白,很简单的。然后将按钮的点击的触发事件设置为:Click,然后在事件中调用方法,参数为点击的按钮的名字即可。千万不要双击按钮让自动生成的事件为CheckedChanged,否则清空按钮的方法会陷入死循环。下午帮你测试的时候就是不小心双击按钮使用VS自动生成的CheckedChanged事件,结果程序陷入死循环,因为每次按钮状态的变化都会触发事件,事件被触发后又重复触发事件........... 忘了加判断选中的是哪一个呵呵 private void check_cb(CheckBox args_cb) { foreach (Control ctl in this.Controls) { //is操作符 : 检查一个对象是否兼容于其他指定的类型,并返回一个Bool值,永远不会抛出异常。此代码检验遍历的控件是否checkbox if (ctl is CheckBox) { //as操作符:与强制类型转换是一样的,但是永远不会抛出异常,即如果转换不成功,会返回null。此代码尝试将控件转换为checkbox CheckBox cb = ctl as CheckBox; //如果转换成功 if (cb != null) { //将复选框设为非选中状态 cb.Checked = false; } } } //将传参的复选框亦即点击的复选框设为选中状态,并判断选中的是哪一个 args_cb.Checked = true; MessageBox.Show("选中了:"+args_cb.Name+" 复选框"); } Clear()和Clone() 谁有查询的通用方法? 如何在函数中直接等待网页下载完毕后,再进行下步处理? DataGrid模板列按钮取值问题 结构类型中构造函数的问题 怎么样实现动态的加载多个chart(解决可以再开贴给分)? 为什么我的水晶报表不能横向打印,而且在预览时移动报表滚动条就出现报表内容中很多画线都会移位 控制远程机器服务的开启与停止的问题 如何通过c# 检测系统建立文件和建立txt等文本文件 求解wpf动态绑定几超链接的问题 VS2010如何将windows窗体应用程序打包和部署 listview绑定imagelist导致vs项目未响应
http://msdn.microsoft.com/zh-cn/library/system.windows.controls.radiobutton.aspx
JS先全部不选种,再选种标记的.
最简单的方法:有多少个选项就拖多少个Panel进去,把checkbox放到panel上就行了原理:Checkbox的选择是根据组来确定的,如果不把这些checkbox放在一个组里就和Radiobutton的功能差不多了呵呵
你以前不能多选,可能是都放在了窗体上,那么编译器会认为你的checkbox都属于Form这个组,因此不能单选
我可能理解错你的意思了,你的意思是一大堆checkbox,只能选中其中一个项对吗?这可以通过写代码来处理。我写个代码测试一下呵呵
2 CheckBox可以使用Mouse_Up mouse_Down事件实现,就是必须有一个且只有一个被选中。
foreach (Control ctl in groupBox.Controls)
{
if (((RadioButton)ctl).Checked == true)
{
value = ((RadioButton)ctl).Text;
}
}
CheckBox chk=sender as CheckBox;
for遍历设置其他为false
下班回家,刚帮你写的代码,测试通过呵呵using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;namespace testcheckbox
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void check_cb(CheckBox args_cb)
{
foreach (Control ctl in this.Controls)
{
//is操作符 : 检查一个对象是否兼容于其他指定的类型,并返回一个Bool值,永远不会抛出异常。此代码检验遍历的控件是否checkbox
if (ctl is CheckBox)
{
//as操作符:与强制类型转换是一样的,但是永远不会抛出异常,即如果转换不成功,会返回null。此代码尝试将控件转换为checkbox
CheckBox cb = ctl as CheckBox;
//如果转换成功
if (cb != null)
{
//将复选框设为非选中状态
cb.Checked = false;
}
}
}
//将传参的复选框亦即点击的复选框设为选中状态
args_cb.Checked = true;
} private void checkBox1_Click_1(object sender, EventArgs e)
{
check_cb(checkBox1);
} private void checkBox2_Click(object sender, EventArgs e)
{
check_cb(checkBox2);
} private void checkBox3_Click(object sender, EventArgs e)
{
check_cb(checkBox3);
} private void checkBox4_Click(object sender, EventArgs e)
{
check_cb(checkBox4);
}
}
}
结贴给分吧
再次说明代码的意思:建立一个方法:private void check_cb(CheckBox args_cb)
方法的参数是CheckBox类型的,args_cb参数表示点击的哪个按钮
方法的逻辑我用注释给你标记清了,自己看看就能明白,很简单的。然后将按钮的点击的触发事件设置为:Click,然后在事件中调用方法,参数为点击的按钮的名字即可。
千万不要双击按钮让自动生成的事件为CheckedChanged,否则清空按钮的方法会陷入死循环。下午帮你测试的时候就是不小心双击按钮使用VS自动生成的CheckedChanged事件,结果程序陷入死循环,因为每次按钮状态的变化都会触发事件,事件被触发后又重复触发事件...........
private void check_cb(CheckBox args_cb)
{
foreach (Control ctl in this.Controls)
{
//is操作符 : 检查一个对象是否兼容于其他指定的类型,并返回一个Bool值,永远不会抛出异常。此代码检验遍历的控件是否checkbox
if (ctl is CheckBox)
{
//as操作符:与强制类型转换是一样的,但是永远不会抛出异常,即如果转换不成功,会返回null。此代码尝试将控件转换为checkbox
CheckBox cb = ctl as CheckBox;
//如果转换成功
if (cb != null)
{
//将复选框设为非选中状态
cb.Checked = false;
}
}
}
//将传参的复选框亦即点击的复选框设为选中状态,并判断选中的是哪一个
args_cb.Checked = true;
MessageBox.Show("选中了:"+args_cb.Name+" 复选框");
}