【发布时间】:2014-12-08 17:00:41
【问题描述】:
我是一个菜鸟程序员,上第一堂课 1 个月。现在我正在用 C# 制作一个 WINFORM 应用程序,该应用程序应该用于酒吧的某种收银机。
表格包括: - 6 个名为 Drank1 到 Drank6 的按钮 - 一个确定按钮 - 一个名为total 的文本框和按钮。 - 每个“喝”按钮附带的重置按钮。
表单的本质是:您在文本框中输入名称、类型、内容和价格,其中一个drankbuttons 将获得名称和值。在您为这些按钮命名后,您可以按所需的次数,然后按总计以获取每种饮料的总价。
表单按预期工作,但我想知道。我写了一个 if-else 语句,与按下 OK 按钮有关,需要按下该按钮才能向按钮声明值。
我用下面的代码做到了这一点。
private void btnValidate_Click(object sender, EventArgs e)
{
if (btnDrank1.Text == "Drank1")
{
btnDrank1.Text = txtNaam.Text + "\n" + txtInhoud.Text + "cl";
drank[0].Naam = txtNaam.Text;
drank[0].Inhoud = txtInhoud.Text;
drank[0].Prijs = Convert.ToDouble(txtPrijs.Text);
}
else
{
if (btnDrank2.Text == "Drank2")
{
btnDrank2.Text = txtNaam.Text + "\n" + txtInhoud.Text + "cl";
drank[1].Naam = txtNaam.Text;
drank[1].Inhoud = txtInhoud.Text;
drank[1].Prijs = Convert.ToDouble(txtPrijs.Text);
}
else
{
if (btnDrank3.Text == "Drank3")
{
btnDrank3.Text = txtNaam.Text + "\n" + txtInhoud.Text + "cl";
drank[2].Naam = txtNaam.Text;
drank[2].Inhoud = txtInhoud.Text;
drank[2].Prijs = Convert.ToDouble(txtPrijs.Text);
}
else
{
if (btnDrank4.Text == "Drank4")
{
btnDrank4.Text = txtNaam.Text + "\n" + txtInhoud.Text + "cl";
drank[3].Naam = txtNaam.Text;
drank[3].Inhoud = txtInhoud.Text;
drank[3].Prijs = Convert.ToDouble(txtPrijs.Text);
}
else
{
if (btnDrank5.Text == "Drank5")
{
btnDrank5.Text = txtNaam.Text + "\n" + txtInhoud.Text + "cl";
drank[4].Naam = txtNaam.Text;
drank[4].Inhoud = txtInhoud.Text;
drank[4].Prijs = Convert.ToDouble(txtPrijs.Text);
}
else
{
if (btnDrank6.Text == "Drank6")
{
btnDrank6.Text = txtNaam.Text + "\n" + txtInhoud.Text + "cl";
drank[5].Naam = txtNaam.Text;
drank[5].Inhoud = txtInhoud.Text;
drank[5].Prijs = Convert.ToDouble(txtPrijs.Text);
}
else
{
MessageBox.Show("6 dranken is genoeg!", "My Application",
MessageBoxButtons.OKCancel, MessageBoxIcon.Asterisk);
}
我想知道是否有一种方法可以减少代码量并仍然获得相同的结果。我在想也许是一个 foreach 循环,但不太清楚如何用自定义类编写一个。
干杯
【问题讨论】:
-
else if ( condition ) { statements } -
您可以使用
else if将所有这些链接在一起。 -
如果可以,但换个开关会好很多。
-
值得一提的是,所有这些代码都是重复的。如果您可以获得您选择的饮料的索引而不是文本(或只是解析 int),您可以将其减少到您在每个语句中重复的 4 行。
标签: c# if-statement foreach