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

时间:2015-04-01 21:56:10

标签: c# windows-applications

我对所有这些编程和c#windows应用程序都很陌生,所以对我很轻松。

基本上我有13个复选框,我想为其分配值,所以当选中复选框时,这些值会进入公式:

consumption = energy * 15 / 1000

“能量”代表复选框。我想要检查所有选中的checkBoxes值。

如果无法分配值,那么最好的方法是什么?

我知道的唯一方法是为每一个做以下事情:

if (checkBox1.CheckState == CheckState.Checked)
{
       energy += energy + 1200; 
}

我想做一个foreach方法,但我不知道怎么做。

3 个答案:

答案 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)

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

enter image description here