Member 13664566 Ответов: 1

Изменение переменной на основе флажков


У меня есть программа, которая вычисляет цену напитка. У меня есть три флажка, каждый с ингредиентом за 25 центов, который клиент может выбрать для добавления.

Как добавить 0,25 к промежуточному итогу для каждого выбранного флажка? (Имейте в виду, что мне нужно держать сумму "экстры" в переменной, а не просто прикреплять 0,25 для каждого флажка.

Как это сделать с помощью переключателей? У меня также есть 3 переключателя, каждый с суммой, которая изменяет промежуточный итог.

Спасибо.

Что я уже пробовал:

Действительно хромой оператор if/else, который изменил переменную "addOns" на "addOns = 0 + .25", но он не работал правильно.

1 Ответов

Рейтинг:
0

BillWoodruff

Используйте радиокнопки в том же контейнере (форма, панель и т. д.), где только один выбор это разрешено. Используйте флажки, чтобы обеспечить несколько независимых вариантов выбора.

Допустим, у вас есть три флажка: cbx1, cbx2, cbx3

0. определите переменные и напишите обработчик событий для события CheckStateChanged:

private decimal subtotal = 0.0m;
private CheckBox currentCbx;

private void Ingredients_CheckStateChanged(object sender, EventArgs e)
{
    currentCbx = sender as CheckBox;
    subtotal += currentCbx.Checked ? 0.25m : -0.25m;'

    // for testing
    textBox1.Text = subtotal.ToString();
}
1. Подключите обработчик событий ко всем трем флажкам во время разработки, выбрав их все и используя браузер свойств или в коде во время выполнения.

Используя этот метод, вы хотите быть уверены, что флажки установлены правильно. все непроверено когда ваше приложение запускается.

Другой метод, если вам не нужно динамическое обновление из под-итога, заключается в том, чтобы просто написать метод для вычисления значения, основанного на состоянии ваших флажков.


Member 13664566

Большое спасибо за ваш ответ. Теперь у меня есть каждый из моих трех флажков, использующих следующий код:
частная chkEnergyBooster_CheckedChanged недействительным(объект отправителя, EventArgs в электронной)
{
десятичный промежуточный итог = 0,0 м;
промежуточный итог += chkEnergyBooster.Проверено ? .25м : -0.25 м;

lblSubTotal.Текст = промежуточный итог.ToString("c");
}

Но у меня есть несколько проблем. Во-первых, когда я ставлю несколько флажков, число в lblSubtotal не идет от .25 до .50 до .75. Он просто остается на уровне 25, независимо от того, сколько ящиков я проверяю. Как мне заставить его увеличиться от этого?25?

Другая проблема заключается в том, что когда я устанавливаю и снимаю флажок, метка идет от $0.25 до ($0.25), и я не уверен, почему.

Кроме того, у меня есть много функций, которые используют переменную "subtotal" в других частях моей формы. Как мне сохранить значение этой переменной во всей форме? Похоже, что так, как у меня сейчас, он просто существует в этих чекбоксах.checkchanged events.
Спасибо!

BillWoodruff

1. " Во-первых, когда я ставлю несколько флажков, число в lblSubtotal не идет от .25 до .50 до .75. Он просто остается на уровне 0,25" это потому, что вы устанавливаете "промежуточный итог" на 0,00 каждый раз, когда вносится какое-либо изменение в любой флажок.

2. "Кроме того, у меня есть много функций, которые используют переменную "subtotal" в других частях моей формы. Как мне сохранить значение этой переменной во всей форме?" Определите переменную вне любого метода ... как в приведенном здесь примере кода.

Member 13664566

Спасибо! Мы очень ценим вашу помощь.

BillWoodruff

Если он полностью отвечает вашим проблемам, примите его как решение. Если полезно или не полезно, проголосуйте за свой рейтинг.