c#中涉及两个组框中多个单选按钮的计算

本文关键字:计算 单选按钮 两个 | 更新日期: 2023-09-27 18:10:40

你好,我在一个涉及单选按钮的任务上有点卡住了。我正在使用else…if语句来确定选中了哪些单选框,然后我希望根据从两个组框中选择的单选按钮执行不同的计算。在一个分组框中,我有3个选项,分别是服装和价格,在另一个分组框中,我有4个选项,分别是数量1-4。当选择两个单选按钮时(每个组框中一个),我希望进行计算。我认为我的if语句是正确的,但我在做计算和转换为字符串时遇到了麻烦,因为我只使用txtboxes进行计算,然后将其转换为int或double并将其参与计算。由于我没有在这个表单上使用文本框,我被难住了,下面是我的代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Radio_Button_task
{
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }
    bool blnChecked = true;
    private void btnEnd_Click(object sender, EventArgs e)
    {
        this.Dispose();
    }
    private void btnClear_Click(object sender, EventArgs e)
    {
        lblTotal.Text = "";
        rbtnJeans.Checked = false;
        rbtnQuant1.Checked = false;
        rbtnQuant2.Checked = false;
        rbtnQuant3.Checked = false;
        rbtnQuant4.Checked = false;
        rbtnShirt.Checked = false;
        rbtnShorts.Checked = false;
    }
    private void btnCalculate_Click(object sender, EventArgs e)
    {
        double dbTotal;
        if (rbtnJeans.Checked && rbtnQuant1.Checked)
        {
            dbTotal = Convert.ToDouble(28 * 1);
        }
        else if (rbtnJeans.Checked && rbtnQuant2.Checked)
        {
            dbTotal = Convert.ToDouble(28 * 2);
        }
        else if (rbtnJeans.Checked && rbtnQuant3.Checked)
        {
            dbTotal = Convert.ToDouble(28 * 3);
        }
        else if (rbtnJeans.Checked && rbtnQuant4.Checked)
        {
            dbTotal = Convert.ToDouble(28 * 4);
        }
        lblTotal.Text = "The total cost is: £" + dbTotal.ToString("0.00");
    }
}
}

c#中涉及两个组框中多个单选按钮的计算

您没有处理没有单选按钮或只选中一个的情况。初始化dbTotal为0

问题是所有这些if语句都可能为假。如果发生这种情况,你会在最后使用dbTotal,而不给它赋任何值。编译器不喜欢这样。

简单的修复方法是在创建dbTotal时初始化它:

double dbTotal = 0;

同样的事情可以这样做。对Items选择也运行类似的循环。这里的"gbQuan"是包含所有单选按钮的组框/面板。

private void btnCalculate_Click(object sender, EventArgs e)
{
double quan = 0, item = 28;
foreach (RadioButton temp in gbQuan.Controls)
{
    if (temp.Checked)
        quan = Convert.ToDouble(temp.Text);
}
lblTotal.Text = "The total cost is: £" + (item * quan).ToString("0.00");
}

希望能有所帮助。