public enum AAA
{
A1,A2,A3,A4,A5
}上面是一个枚举类型,我现在有5个checkbox,每个控件对应AAA里面的一个值,
现在在提交的时候,我想检查这5个checkbox,比如有最后两个checkbox被勾选的话,那么
AAA aaa = AAA.A4|AAA.A5;
如果是前两个checkbox被勾选的话,那么
AAA aaa = AAA.A1|AAA.A2;
这样的。请问我要怎么做到这一点?我的问题是怎么做到这一点,不是怎么判断,判断我会的,只要用aaa.CompareTo()就可以了。
{
A1,A2,A3,A4,A5
}上面是一个枚举类型,我现在有5个checkbox,每个控件对应AAA里面的一个值,
现在在提交的时候,我想检查这5个checkbox,比如有最后两个checkbox被勾选的话,那么
AAA aaa = AAA.A4|AAA.A5;
如果是前两个checkbox被勾选的话,那么
AAA aaa = AAA.A1|AAA.A2;
这样的。请问我要怎么做到这一点?我的问题是怎么做到这一点,不是怎么判断,判断我会的,只要用aaa.CompareTo()就可以了。
[FlagsAttribute]
enum MyColor : short
{
Black,
Red,
Green,
Blue
};
MyColor c;
if(c==MyColor.Black|MyColor.Red)
我的问题是根据checkbox 来判断aaa 的值。并不是根据aaa判断其他的内容。
我的checkbox其实是ToolStripMenuItem
每个checkbox的值都是aaa的一部分。
{
if(c is checkbox)
{
if(c.Checked){}
}
}
if(c.Checked){}
}
这里面的内容你怎么不写呢?我要的就是这里面的内容,外面的部分,我当然是会的。
如果只选了第一个那么aaa = AAA.A1,如果同时选择了前面两个,那么aaa = AAA.A1|AAA.A2;这样的
[Flags]
public enum AAA
{
A1, A2, A3, A4, A5
} AAA aaa;
private void checkBox1_CheckStateChanged(object sender, EventArgs e)
{
if (checkBox1.Checked)
{
aaa = aaa | AAA.A1;
}
else
{
aaa = aaa & (~AAA.A1);
} this.Text = aaa.ToString(); }
以上供参考,你试试看这样行不?在AAA.A1 之前使用位反 ~
我不知道你那种行不行,但是我判断那里又出问题了。比如我设置
aaa=AAA.A1|AAA.A2;
那我下面想判断AAA里有没有包含A1,我该怎么做呢?
{
A1, A2, A3 , A4 , A5 , A6
}
AAA A = AAA.A1 | AAA.A5 | AAA.A6;
这样的语句,我查看的时候,却看到
A的内容是A2|A5,奇怪奇怪。
我用ArrayList存放选项,然后进行判断,这样都很方便 ,只是我想进一步的了解枚举,了解一些新的语法。
我原来的实现方式是这样的
ArrayList aaa = new ArrayList();
if(checkbox1.checked){
aaa.Add(1);
}else{
aaa.Remove(1);
}if(checkbox2.checked){
aaa.Add(2);
}else{
aaa.Remove(2);
}
……………………下面就要判断了
if(aaa.Contain(1)){
…………
}
if(aaa.Contain(2)){
…………
}
……………………现在用这种方式可以实现,但是我觉得这种形式更像枚举,所以就尝试一下我没有用过的枚举来实现,结果。
aaa=AAA.A1|AAA.A2;
if ((aaa & AAA.A1)== AAA.A1 ) MessageBox.Show("Include A1");
{
public Form1()
{
InitializeComponent(); toolStripMenuItem1.Tag = AAA.A1;
toolStripMenuItem2.Tag = AAA.A2;
toolStripMenuItem3.Tag = AAA.A3;
toolStripMenuItem4.Tag = AAA.A4;
toolStripMenuItem5.Tag = AAA.A5;
toolStripMenuItem1.CheckedChanged += new EventHandler(toolStripMenuItem_CheckedChanged);
toolStripMenuItem2.CheckedChanged += new EventHandler(toolStripMenuItem_CheckedChanged);
toolStripMenuItem3.CheckedChanged += new EventHandler(toolStripMenuItem_CheckedChanged);
toolStripMenuItem4.CheckedChanged += new EventHandler(toolStripMenuItem_CheckedChanged);
toolStripMenuItem5.CheckedChanged += new EventHandler(toolStripMenuItem_CheckedChanged);
} void toolStripMenuItem_CheckedChanged(object sender, EventArgs e)
{
ToolStripMenuItem item = (ToolStripMenuItem)sender;
if (item.Checked)
a |= (AAA)item.Tag;
else
a ^= (AAA)item.Tag;
} public enum AAA
{
A1 = 1, A2 = 2, A3 = 4, A4 = 8 , A5 = 16
} private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show(a.ToString());
}
}
非常感谢qldsrx、spmzfz二位(排名不分先后)。