运用C#进行点餐系统的实现

点餐案例

在设计案例之前,我们需要先对点餐界面进行布局设计

如下图所示,对界面进行布局设计.

运用C#进行点餐系统的实现_第1张图片

添加tag标签

为了以后方便获取FlowLayoutPanel中控件的数据,所以我们给FlowLayoutPanel中的所有label添加tag标签

其中我们把所有label前面的编号标签设置为bh

在这里插入图片描述
所有label中间的菜名标签设置为cm

在这里插入图片描述

所有label后面的价格标签设置为jg

在这里插入图片描述

然后再进行点餐案例具体步骤

 private void Form1_Load(object sender, EventArgs e)
        {
            //根据flowLayoutPanel中的菜的数量,添加对应的序号按钮
            foreach (Control item in flowLayoutPanel2.Controls)//这个循环就是找到菜单中所有的flowLayoutPanel控件还包含其中的label控件集合
            //foreach控件循环表示在flowLayoutPanel2(菜单的控件)的控件集合中,进行一个遍历()挨个获取
            {
                //使用代码创建按钮,
                Button but = new Button();//使用关键字new,创建button对象(实例化)
                
                but.Tag = item;//将flowLayoutPanel控件中的子flowLayoutPanel控件赋值给按钮的标签
                foreach (Control abcd in item.Controls)
                //这个循环是找到每一个flowLayoutPanel控件中子控件的label控件
                {
                    if (abcd.Tag.ToString() == "bh")//判断tag属性值,如果这个控件的tag为bh,那就说明是编号.
                    {
                        but.Text = abcd.Text;//获取对应的控件中的文本
                    }
                }
                flowLayoutPanel10.Controls.Add(but);//将获取的文本放在flowLayoutPanel10控件中,自动排序生成按钮
                but.Click += But_Click;//建立but的click事件
               // but.Click -= But_Click;
            }



        }
        int zj = 0;//定义一个求和计算总价
        private void But_Click(object sender, EventArgs e)
        {
            //MessageBox.Show("121212");
            Button fqz = (Button)sender;//类型转换
            //sender表示事件的发起者,那个对选哪个触发事件,那么sender就是谁
            Label lab = new Label();//使用关键字new,创建label对象(实例化)
            Control zkj = (Control)fqz.Tag;//获取到编号对应的菜单子控件
            //获取flowLayoutPanel控件中每一个子flowLayoutPanel控件中的的菜名还有价格.
            foreach (Control item in zkj.Controls)
                //这个foreach循环表示在zkj中进行遍历找到所有的子控件
            {
                if (item.Tag.ToString() == "cm")//遍历时判断tag属性值,如果这个控件的tag为cm
                {
                    lab.Text = item.Text;//则获取对应控件的文本放在lab中
                }
                if (item.Tag.ToString() == "jg")//遍历时判断tag属性值,如果这个控件的tag为jg
                {
                    zj += int.Parse(item.Text);//则获取控件的文本进行求和放在zj中
                }
            }
            flowLayoutPanel11.Controls.Add(lab);//将获取的文本放在flowLayoutPanel11控件中
            label27.Text = zj + "元";//将获取的文本求和以后的价格放在label27控件中
        }
    }
}

你可能感兴趣的:(类型转换,属性赋值,零基础学习)