Расчеты с использованием нескольких переключателей в двух групповых полях в C # - PullRequest
0 голосов
/ 08 октября 2011

Здравствуйте, я немного застрял на задании, включающем переключатели.Я использую оператор 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");
    }
}
}

Ответы [ 3 ]

1 голос
/ 08 октября 2011

Проблема в том, что все утверждения могут быть ложными.Если бы это произошло, вы бы использовали dbTotal в самом конце, ничего не назначая ему.Компилятору это не нравится.

Простое исправление - просто инициализировать dbTotal при его создании:

double dbTotal = 0;
1 голос
/ 08 октября 2011

Вы не обрабатываете случай, когда ни один из переключателей или только один не отмечен. Инициализируйте dbTotal на ноль.

0 голосов
/ 08 октября 2011

То же самое можно сделать так. Запустите аналогичный цикл для выбора элементов также. Здесь "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");
}

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...