我是一名菜鸟程序员,在我上一堂课的1个月。现在我在为C#创建一个WINFORM应用程序,这应该是某种收银机吧。
表格包括: - 6个按钮,名为Drank1到Drank6 - 一个OK按钮 - 一个名为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循环,但是无法弄清楚如何用自定义类编写一个。
干杯
答案 0 :(得分:3)
你想要的是一个switch语句。
http://www.dotnetperls.com/string-switch
最终会看起来像这样:
switch (btnDrank2.Text)
{
case "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);
break;
case "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);
break;
}
等。代码可能有错误,因为我无法访问c#编译器。
答案 1 :(得分:0)
使用switch语句。在你的情况下代码将是那样的
private void btnValidate_Click(object sender, EventArgs e)
{
string text = btnDrank4.Text;
switch(text)
{
case "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);
break;
case "Drank2":
// your code here
break;
// here the other cases
default ""
// here everything is not the previous values
// I suppose these lines
MessageBox.Show("6 dranken is genoeg!", "My Application",
MessageBoxButtons.OKCancel, MessageBoxIcon.Asterisk);
break;
}
}