如何为复选框赋值并在公式中使用它?
How to assign a value to a checkbox and use it in a formula?
我对所有这些编程和 C# windows 应用程序都很陌生,所以请放轻松。
基本上我有 13 个复选框,我想为其赋值,所以当复选框被选中时,这些值进入公式:
consumption = energy * 15 / 1000
"energy" 表示复选框。我希望所有选中的复选框值都放在那里。
如果无法赋值,最好的方法是什么?
我知道的唯一方法是对每个人执行以下操作:
if (checkBox1.CheckState == CheckState.Checked)
{
energy += energy + 1200;
}
我想做一个foreach
方法,但我不知道怎么做。
您可以将值存储在 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);
}
}
如果你正好有 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;
}
所以假设 energy
是您的 class 中的成员,并且您有一种计算消耗的方法,例如:
public partial class Form1 : Form
{
private double energy;
....
public double consumption
{
get { return energy*15.0/1000; }
}
(注意双精度和 15.0/1000
因为 15/1000
是整数除法并且是 0)
然后您可以为所有 increments/decrements energy
1200 的复选框添加事件,无论何时选中或未选中:
private void CheckedChanged(object sender, EventArgs e)
{
energy += ((CheckBox) sender).Checked ? 1200 : -1200;
}
(当所有复选框都未选中时能量等于0)
您可以将事件添加到设计器中的每个复选框:
我对所有这些编程和 C# windows 应用程序都很陌生,所以请放轻松。
基本上我有 13 个复选框,我想为其赋值,所以当复选框被选中时,这些值进入公式:
consumption = energy * 15 / 1000
"energy" 表示复选框。我希望所有选中的复选框值都放在那里。
如果无法赋值,最好的方法是什么?
我知道的唯一方法是对每个人执行以下操作:
if (checkBox1.CheckState == CheckState.Checked)
{
energy += energy + 1200;
}
我想做一个foreach
方法,但我不知道怎么做。
您可以将值存储在 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);
}
}
如果你正好有 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;
}
所以假设 energy
是您的 class 中的成员,并且您有一种计算消耗的方法,例如:
public partial class Form1 : Form
{
private double energy;
....
public double consumption
{
get { return energy*15.0/1000; }
}
(注意双精度和 15.0/1000
因为 15/1000
是整数除法并且是 0)
然后您可以为所有 increments/decrements energy
1200 的复选框添加事件,无论何时选中或未选中:
private void CheckedChanged(object sender, EventArgs e)
{
energy += ((CheckBox) sender).Checked ? 1200 : -1200;
}
(当所有复选框都未选中时能量等于0)
您可以将事件添加到设计器中的每个复选框: