Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#:在给定4个组合框选择的情况下,立即更新小计文本框_C#_Combobox_Textbox - Fatal编程技术网

C#:在给定4个组合框选择的情况下,立即更新小计文本框

C#:在给定4个组合框选择的情况下,立即更新小计文本框,c#,combobox,textbox,C#,Combobox,Textbox,这是我在StackOverflow上的第一篇帖子,善良点:D 我正在为课堂开发一个餐馆账单计算器。给用户输入四个组合框:饮料、开胃菜、主菜和甜点,我让代码计算小计、税和总额。对于每个组合框,我都有一个预定义项列表以及与每个项关联的值。我已经成功地编写了这个代码。当用户选择他们的项目时,我的小计、提示和总计文本框会自动更新。小计=价格+appPrice+mainPrice+dessPrice。税=小计*.1M。总计=小计+税金 我的问题:假设用户输入他们对每个类别(饮料、应用程序、主食、甜点)的选

这是我在StackOverflow上的第一篇帖子,善良点:D

我正在为课堂开发一个餐馆账单计算器。给用户输入四个组合框:饮料、开胃菜、主菜和甜点,我让代码计算小计、税和总额。对于每个组合框,我都有一个预定义项列表以及与每个项关联的值。我已经成功地编写了这个代码。当用户选择他们的项目时,我的小计、提示和总计文本框会自动更新。小计=价格+appPrice+mainPrice+dessPrice。税=小计*.1M。总计=小计+税金

我的问题:假设用户输入他们对每个类别(饮料、应用程序、主食、甜点)的选择。然后,假设用户返回饮料(combobox1)并决定将其从一个选项更改为另一个选项。即使选择了某个选项,我的代码也会将其他选项归零。类似地,假设用户输入所有四种选择,然后返回以更改其主菜(combobox3),我的代码保存Combox1和2(饮料和开胃菜),添加新选择的主菜,但将Combox4(甜点)置零

我知道这个问题是由于selectionindexchanged事件处理程序引起的。如果combobox2的选择发生更改,则它将计算Combox1和Combox2,但Combox3和Combox4中未发生更改,因此它将其还原为0值。对吧?

我相信答案是显而易见的,但我是个新手。谢谢

无论如何,这里是我的代码预览(对不起,我太啰嗦了):


这是我的

之所以会发生这种情况,是因为在第一个处理程序中,您仅使用来自第一个组合框的计算填充文本框。您应该创建一个基于所有4个选定项目计算账单的函数,并在SelectedIndexChanged处理程序中调用该函数。基本上,您的方法应该执行上一个处理程序所执行的操作

private void comboBox1/2/3/4_SelectedIndexChanged(object sender, EventArgs e)
{
  calculateBill();
}

private void calculateBill()
{
    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);
}

只要在任何一个组合框被更改时选中,我不确定这里的问题是什么。看来你要我们解释你写的代码。是这样吗?@KenWhite很抱歉这种含糊不清的说法,我想知道为什么它不能正常工作,以及如何修复它,但我已经想出了一个解决办法。非常感谢。比我快。我正要点击提交我的答案lol。我在textbox3.Text=Convert.ToString(x+y..+z)上得到一个“System.NullReferenceException”
private void comboBox1/2/3/4_SelectedIndexChanged(object sender, EventArgs e)
{
  calculateBill();
}

private void calculateBill()
{
    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);
}