Это мой первый пост на StackOverflow, будьте добры :D!
Я разрабатываю калькулятор счетов в ресторане для класса. Учитывая пользовательский ввод в четырех полях со списком: напиток, закуска, основное блюдо и десерт, у меня есть код, вычисляющий промежуточный итог, налог и общую сумму. Для каждого поля со списком у меня есть список предопределенных элементов и значений, связанных с каждым элементом. Я смог успешно закодировать это. Когда пользователь выбирает свои элементы, у меня автоматически обновляются мои промежуточные итоги, подсказки и общие текстовые поля. Итого = bevPrice + appPrice + mainPrice + dessPrice. Налог = промежуточный итог * 0,1 млн. Итого = промежуточный итог + налог.
Моя проблема: скажем, пользователь вводит свой выбор для каждой категории (напиток, приложение, основное, десерт). Затем, предположим, пользователь возвращается к напитку (combobox1) и решает изменить его с одного варианта на другой. Мой код обнуляет другие варианты выбора, даже если был выбран вариант. Точно так же, скажем, пользователь вводит все четыре варианта выбора, а затем возвращается, чтобы изменить свое основное блюдо (combobox3), мой код сохраняет поля со списком 1 и 2 (напиток и закуска), добавляет новое выбранное основное блюдо, но обнуляет поле со списком 4 (десерт).
Я знаю, что эта проблема возникает из-за обработчика события selectionindexchanged. Если выбор поля со списком 2 изменен, то он вычисляет поля со списком 1 и 2, но изменения не произошли в полях со списком 3 и 4, поэтому он возвращает его значение 0. Верно?
Я уверен, что ответ очевиден, но я новичок. Спасибо!
В любом случае, вот предварительный просмотр моего кода (извините, я такой многословный):
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
Menu bevSelect = comboBox1.SelectedItem as Menu;
textBox3.Text = Convert.ToString(bevSelect.bevPrice);
}
private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
{
Menu appSelect = comboBox2.SelectedItem as Menu;
Menu bevSelect = comboBox1.SelectedItem as Menu;
textBox3.Text = Convert.ToString(bevSelect.bevPrice + appSelect.appPrice);
}
private void comboBox3_SelectedIndexChanged(object sender, EventArgs e)
{
Menu mainSelect = comboBox3.SelectedItem as Menu;
Menu appSelect = comboBox2.SelectedItem as Menu;
Menu bevSelect = comboBox1.SelectedItem as Menu;
textBox3.Text = Convert.ToString(bevSelect.bevPrice + appSelect.appPrice + mainSelect.mainPrice);
}
private void comboBox4_SelectedIndexChanged(object sender, EventArgs e)
{
Menu dessSelect = comboBox4.SelectedItem as Menu;
Menu mainSelect = comboBox3.SelectedItem as Menu;
Menu appSelect = comboBox2.SelectedItem as Menu;
Menu bevSelect = comboBox1.SelectedItem as Menu;
textBox3.Text = Convert.ToString(bevSelect.bevPrice + appSelect.appPrice + mainSelect.mainPrice + dessSelect.dessPrice);
А вот и видео!