请帮我实现一下这个功能............

save234 2011-06-22 09:17:46


有三个CheckBox,两个label,还有一个button1(忘了弄上去)
假如我勾选第1、3个CheckBox,点击button1,就形成一个方案1,这时,label1的Text变成“方案一”,又假如我勾选第2、3个CheckBox,再点击button1,形成方案二,这时,label2的Text变成“方案二”,

我需要实现的功能是:
如果我点击"方案一"这个label的时候,那三个CheckBox就是第1、3个呈选中状态;如果我点击"方案二"这个label的时候,那三个CheckBox就是第2、3个呈选中状态
也就是说,点击哪个label,那三个CheckBox就呈现当时选择的状态

谢谢!!!
...全文
103 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
threenewbee 2011-06-22
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 save234 的回复:]
引用 4 楼 caozhy 的回复:
private int 方案1 = 0;
private int 方案2 = 0;


请问:
CheckBox1.Checked = 方案1 | 4 == 方案1;
怎么读,竖线是啥东西?
[/Quote]
其实就是用一个整数保存一个方案。
0 000 表示都不选
1 001 表示选3
2 010 表示选2
3 011 表示选23
4 100 表示选1
5 101 表示选13
6 110 表示选12
7 111 表示选123

假设一个方案是6,那么怎么选呢?
6 | 4 = 110 或 100,得到 110,还等于 6,所以1选中。
6 | 2 = 110 或 010,得到 110,还等于 6,所以2选中。
6 | 1 = 110 或 001,得到 111,不等于 6,所以3不选。
save234 2011-06-22
  • 打赏
  • 举报
回复
label1.Tag = new List<object> { checkBox1.Checked, checkBox2.Checked, checkBox3.Checked };

checkBox1.Checked = ((List<object>)label1.Tag)[0]; //等号后面该怎么写

请问,等号后面该怎么写?
matrixcl 2011-06-22
  • 打赏
  • 举报
回复
竖线是“按位或”运算符。

变量名居然用中文。。。
save234 2011-06-22
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 caozhy 的回复:]
private int 方案1 = 0;
private int 方案2 = 0;

[/Quote]
请问:
CheckBox1.Checked = 方案1 | 4 == 方案1;
怎么读,竖线是啥东西?
threenewbee 2011-06-22
  • 打赏
  • 举报
回复
private int 方案1 = 0;
private int 方案2 = 0;

Button1
方案1 = (CheckBox1.Checked ? 1 : 0) * 4 + (CheckBox2.Checked ? 1 : 0) * 2 + (CheckBox3.Checked ? 1 : 0);

Button2
方案2 = (CheckBox1.Checked ? 1 : 0) * 4 + (CheckBox2.Checked ? 1 : 0) * 2 + (CheckBox3.Checked ? 1 : 0);

label1:
CheckBox1.Checked = 方案1 | 4 == 方案1;
CheckBox2.Checked = 方案1 | 2 == 方案1;
CheckBox3.Checked = 方案1 | 1 == 方案1;

label2:
CheckBox1.Checked = 方案2 | 4 == 方案2;
CheckBox2.Checked = 方案2 | 2 == 方案2;
CheckBox3.Checked = 方案2 | 1 == 方案2;
save234 2011-06-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 sxldfang 的回复:]
点击按钮时,label的Tag属性若为空,说明该属性尚未设置,可将选择框的状态记录到Tag属性中

单击标签时,根据Tag的记录,恢复选择框的状态。
[/Quote]
请问,具体怎样实现,
就是不知道怎样把选择框的状态记录到Tag属性中?然后,怎么样根据Tag的记录,恢复选择框的状态。
porschev 2011-06-22
  • 打赏
  • 举报
回复


private void label1_Click(object sender, EventArgs e)
{
checkBox1.Checked = false;
checkBox2.Checked = false;
checkBox3.Checked = false;

checkBox1.Checked = true;
checkBox3.Checked = true;
}

private void label2_Click(object sender, EventArgs e)
{
checkBox1.Checked = false;
checkBox2.Checked = false;
checkBox3.Checked = false;

checkBox2.Checked = true;
checkBox3.Checked = true;
}

private void button1_Click(object sender, EventArgs e)
{
if (checkBox1.Checked == true && checkBox3.Checked == true && checkBox2.Checked == false)
{
label1.Text = "方案1";
}

if (checkBox2.Checked == true && checkBox3.Checked == true && checkBox1.Checked == false)
{
label2.Text = "方案2";
}
}

sxldfang 2011-06-22
  • 打赏
  • 举报
回复
点击按钮时,label的Tag属性若为空,说明该属性尚未设置,可将选择框的状态记录到Tag属性中

单击标签时,根据Tag的记录,恢复选择框的状态。

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧