C#如何使用动态按钮和多种形式

时间:2018-11-28 08:18:34

标签: c# winforms dynamic-forms multiple-forms

我正在创建一个类似自助服务终端订购机的应用程序,使客户可以购买薄饼和比萨饼。

包括五种形式。主要形式,薄饼形式,比萨饼形式,大小形式和浇头形式。

主窗体有两个按钮:

  • 糖果
  • 披萨

当客户单击hoagie按钮时,将打开hoagie表单。 当客户单击比萨饼表单时,比萨饼表单将打开。这两种形式各自具有相应的选择。

Hoagie表单具有3个按钮,例如 hoagie1 / hoagie2 / hoagie3。

Pizza表单具有3个按钮,例如pizza1 / pizza2 / pizza3。

单击按钮时,将打开尺寸表格。尺寸表具有3个按钮,例如小/中/大。大小形式由薄饼形式和披萨形式共享。

单击按钮时,将打开包含不同浇头的浇头表格。一种用于薄饼,一种用于披萨。

这就是我遇到的问题。如果我之前单击了hoagie按钮,然后单击了hoagie1按钮,然后单击了小按钮,则应该打开hoagie浇头表格。如果我之前单击“比萨饼”按钮,然后单击“ pizza1”按钮,然后单击“小”按钮,则应该打开“比萨饼浇头”表单。我将如何处理?

这是我从尺寸表中获得的小按钮单击事件。

private void btnSmall_Click(object sender, EventArgs e)
    {
        frmToppings frmToppings = new frmToppings();
        if (//hoagies)
        {
            frmToppings.DrawHoagieToppingsForm();
        }
        else (//pizzas)
        {
           frmToppings.DrawPizzaToppingsForm();
        }
    }

2 个答案:

答案 0 :(得分:1)

在大小形式的构造函数中,您可以通过一个包含您所使用形式的详细信息的枚举值。将其放入您的尺寸表中:

public enum FoodType {
Pizza,
Hoagies
}

然后是您的尺寸表构造函数和私有字段:

private FoodType type { get; set; }
public SizeForm(FoodType type)
 {
      this.type = type;
 }

然后在您的按钮中单击处理程序

private void btnSmall_Click(object sender, EventArgs e)
{
    frmToppings frmToppings = new frmToppings();
    if (type == FoodType.Hoagies)
    {
        frmToppings.DrawHoagieToppingsForm();
    }
    else (type == FoodType.Pizza)
    {
       frmToppings.DrawPizzaToppingsForm();
    }
}

并从您的Pizza或Hoagies表单中使用此表单:

SizeForm form = new SizeForm(FoodType.Pizza);
form.ShowDialog();

您还可以通过一个持有您的frmToppings.DrawHoagieToppingsForm();frmToppings.DrawPizzaToppingsForm();的委托,然后在您的btnSmall_Click中呼叫该委托

答案 1 :(得分:0)

我不确定这是否是您所需要的,您的解释有些混乱

因此,您有5个表单,并且每个表单中都有一个按钮应打开另一个表单?如果您在form1中,则有一个按钮可以打开form2或form3 如果您在Form2中,则有一个按钮可以打开Form3或Form 4?

因此,在此示例中,代码可能位于主表单中,它具有2个按钮,一个按钮打开披萨,另一个按钮在您单击小食饼干时打开

private void openform2_Click(object sender, EventArgs e) //the action of clicking the button that has the name of "openform2"

    {
        Form2 pizza = new Form2(); //the form2 is your second form, it will opened when openform2 button is clicked
        pizza.Show();
    }

    private void openform3_Click(object sender, EventArgs e) //the action of clicking the button that has the name of "openform3"
    {
        Form3 hoagies = new Form3();
        hoagies.Show();
    }