如何为复选框赋值并在公式中使用它?

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)

您可以将事件添加到设计器中的每个复选框: