#c#
#c#
Вопрос:
Хорошо, итак, я уверен, что об этом спрашивали раньше, но, похоже, я не могу найти ничего по этому поводу. Я пытаюсь создать задание для школы. Это меню заказа на обед, в котором вы можете оформить свой заказ. Мы должны рассчитать промежуточный итог, налог с продаж и общий объем заказа. Кажется, я не могу подобрать правильный код для использования, и я не уверен на 100%, что здесь попробовать.
public partial class Form1 : Form
{
decimal subtotal = 0m;
decimal salesTax = 0m;
decimal orderTotal = 0m;
public Form1()
{
InitializeComponent();
rdoBurger.Checked = true;
rdoPizza.Checked = true;
rdoSalad.Checked = true;
}
private void btnExit_Click(object sender, EventArgs e)
{
Close();
}
private void clearTotals()
{
}
private void btnPlaceOrder_Click(object sender, EventArgs e)
{
if (sender is RadioButton)
{
clearTotals();
}
if (rdoBurger.Checked)
{
decimal subtotal = 6.95m;
subtotal = Convert.ToDecimal(lblSubtotal.Text);
}
Это то, что у меня есть, но это не показывает фактический промежуточный итог, он по-прежнему пуст. Чего я здесь не понимаю?
Комментарии:
1. lblSubtotal. Текст = промежуточный итог. toString();
2. Опубликуйте скриншот вашего интерфейса, чтобы мы могли понять, как вы его настроили. Это имеет значение, потому что имена ваших переменных указывают на то, что вы ~ вероятно ~ использовали RadioButtons, которые могут быть взаимоисключающими в зависимости от того, в какой контейнер (ы) они были помещены. Итак, в зависимости от того, как вы это настроили, вы можете выбрать только один из этих параметров одновременно, или вы можете выбрать несколько элементов…
3. @Idle_Mind ты имеешь в виду графический интерфейс? Я не уверен, что вы подразумеваете под интерфейсом. lblSubtotal — это имя текстового поля.
4. GUI = графический интерфейс пользователя … то есть то же самое, что и просто интерфейс. =)
Ответ №1:
Неплохое начало. Это больше похоже на то, что я ожидал увидеть:
private void btnPlaceOrder_Click(object sender, EventArgs e)
{
// only ONE of these can be checked, so "else if" is used
if (rdoBurger.Checked)
{
subtotal = 6.95m;
}
else if (rdoPizza.Checked)
{
subtotal = 5.95m;
}
else if (rdoSalad.Checked)
{
subtotal = 4.95m;
}
// multiple of these could be checked, so only "if" is used
if (checkBox1.Checked)
{
subtotal = subtotal 100.00m; // whatever this item costs
}
if (checkBox2.Checked)
{
subtotal = subtotal 4.99m; // whatever this item costs
}
if (checkBox3.Checked)
{
subtotal = subtotal 10.99m; // whatever this item costs
}
// compute the tax and the total:
salesTax = subtotal * 0.0775m;
orderTotal = subtotal salesTax;
// output it to your labels/textboxes?
lblSubtotal.Text = "$" subtotal.ToString("F2");
lblSalesTax.Text = "$" salesTax.ToString("F2");
lblOrderTotal.Text = "$" orderTotal.ToString("F2");
}
Комментарии:
1. Сейчас я пытаюсь создать метод четких итогов. Я не уверен, как бы я это сделал с несколькими вариантами. Мне это нужно, чтобы очистить налог с продаж, промежуточный итог и общий объем заказа.
2. Просто используйте
lblXXX.Text = "";
, чтобы очистить элементы управления. Чтобы снять флажок, используйтеcheckBox1.Checked = false;
.3. Мне нужно было бы просмотреть ваш обновленный код для проверки, но мой пример включает дополнения в вычисляемый налог с продаж.
4. Если вы хотите, чтобы он обновлялся немедленно при изменении выбора, затем подключите событие CheckedChanged ваших флажков и вызовите
btnPlaceOrder.PerformClick();
, чтобы выполнить его пересчет. Вы могли бы сделать то же самое для радиокнопок…
Ответ №2:
У переключателей одновременно может быть выбрана только одна кнопка в контейнере. В этом случае кажется, что GroupBox является контейнером. Если бы у вас было несколько групп переключателей, вы могли бы использовать GroupBox в качестве контейнера и выбрать по одному переключателю в каждом GroupBox. Таким образом, вы не можете установить для всех свойств переключателей, отмеченных флажками, значение true.
В вашем btnPlaceOrder_Click
отправителе явно не может быть переключатель. Отправитель — это кнопка, которая была нажата для запуска кода события.
private void button1_Click(object sender, EventArgs e)
{
//Find the radio button that is selected
RadioButton rButton = groupBox1.Controls.OfType<RadioButton>().FirstOrDefault(r => r.Checked == true);
switch (rButton.Text)
{
case "Hamburger - $6.95":
subTotal = 6.95m;
break;
case "Pizza - $5.95":
subTotal = 5.95m;
break;
case "Salad - $4.95":
subTotal = 4.95m;
break;
}
//Add code to handle Add-on items
//For example - The first check box is "Add Onions" - $0.50
if (checkBox1.Checked)
subTotal = .5m;
lblSubTotal.Text = subTotal.ToString();
decimal tax = subTotal * .0775m;
lblTax.Text = tax.ToString();
decimal total = subTotal tax;
lblTotal.Text = total.ToString();
}