我对所有这些编程和c#windows应用程序都很陌生,所以对我很轻松。
基本上我有13个复选框,我想为其分配值,所以当选中复选框时,这些值会进入公式:
consumption = energy * 15 / 1000
“能量”代表复选框。我想要检查所有选中的checkBoxes值。
如果无法分配值,那么最好的方法是什么?
我知道的唯一方法是为每一个做以下事情:
if (checkBox1.CheckState == CheckState.Checked)
{
energy += energy + 1200;
}
我想做一个foreach
方法,但我不知道怎么做。
答案 0 :(得分:0)
您可以将值存储在Checkbox控件的Tag属性中,并且可以在Form.Controls上执行foreach检查它是否是CheckBox的实例并执行您的逻辑。
一个例子
int energy = 0;
foreach(Control control in this.Controls)
{
//you can have additional checks like name starts with to identify energy checkboxes
if (control is CheckBox)
{
energy = energy + Convert.ToInt32(control.Tag);
}
}
答案 1 :(得分:0)
如果你有13个复选框控件,你就可以这样做
首先,您必须在每个复选框中将CheckedChanged事件设置为下一个事件
private void All_CheckedChanged(object sender, EventArgs e)
{
//Check if all the checkboxes are checked
if(checkBox1.Checked && checkBox2.Checked ... && checkbox13.Checked)
{
//If they are checked calculate your value with your formula
var energy = EvaluateEnergy();
}
}
然后,EvaluateEnergy可以是这样的
private int EvaluateEnergy()
{
var energy = 0;
if(checkBox1.Checked)
{
//Assign to every check box a energy value e.g 10
energy += 10;
}
if(checkBox2.Checked)
{
//e.g 20
energy += 20;
}
......
return energy + 1600;
}
答案 2 :(得分:0)
因此,假设energy
是您班级的成员,并且您有一种计算消费的方法,如:
public partial class Form1 : Form
{
private double energy;
....
public double consumption
{
get { return energy*15.0/1000; }
}
(注意double和15.0/1000
因为15/1000
是整数除法且为0)
然后,您可以为所有复选框添加一个事件,只要选中或取消选中一个,就会将energy
递增/递减1200:
private void CheckedChanged(object sender, EventArgs e)
{
energy += ((CheckBox) sender).Checked ? 1200 : -1200;
}
(当未选中所有复选框时,能量等于0)
您可以将事件添加到设计器中的每个复选框: