设计界面
作为点菜系统首先应具备:菜品单,点菜按钮,所点菜品列表以及结账
整理思路
1.应用flowlayoutpanel控件作为主边框进行设计
2.为了解决 在其他的控件中能够更好获取到这个FlowLayoutPanel中控件对应的数据/以及区分控件, 则需要给 FlowLayoutPanel中所有的控件添加Tag标签; 编号为index 名称为name 价格为money
3.点菜按钮一栏刚开始是空的 点菜按钮的个数是在加载窗体时根据菜品的个数添加相同个数的按钮 并且按钮的编号要与菜品编号相对应
编写代码
添加点菜的按钮 把菜单中的控件赋值给编号按钮
foreach (Control item in flowLayoutPanel1.Controls)
{
Button btn = new Button(); //创建按钮
btn.Tag = item; //把子控件中的内容和属性直接赋值给对应的tag (btn.tag为obje类型/父类型 而item为control类型/控件类型)
btn.Size = new Size(50, 30); //给新的按钮设置属性
btn.Font = new Font("楷体",16F);
foreach (Control control in item.Controls)
{
if (control.Tag.ToString()=="index")
{
btn.Text = control.Text;
}
}
flowLayoutPanel2.Controls.Add(btn);
显示已选的菜品 以及计算消费总金额
首先先创建一个公共的点击事件
btn.Click += Btn_Click; //为按钮插入新的点击事件
btn.Click -= Btn_Click; //取消新的点击事件
再继续之前还得先定义一个记录的变量 在计算消费金额时会用到
Button clickBtn = (Button)sender; //sender参数:表示的是事件的发起者
Label lab = new Label();
Control menu = (Control)clickBtn.Tag; //获取菜单中对应的子控件中的菜名和价格
foreach (Control item in menu.Controls) //遍历的是菜单中的子控件
{
if (item.Tag.ToString()=="name")
{
lab.Text = item.Text;
}
if (item.Tag.ToString()=="money")
{
count += int.Parse(item.Text); //int.parse的功能就是将字符串转化为数字
}
}
flowLayoutPanel3.Controls.Add(lab);
label3.Text = count + "元";
点菜系统就完成了