一.需求分析:
1.查看菜单
我们先创建一个窗口,然后用创建一个大盒子装菜品菜单,然后每个菜品菜单里面有价格.菜名 .序号
2.选择菜品
要实现选择菜品我们需要在菜单下面创建一个大盒子来装每一道菜对应的按钮button.通过button按钮来选择菜品.让它显示在黄色胡大盒子里
3.统计价格
我们选择菜品的时候.对应价格求和
实现代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace _01_练习题
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
//我们先设置窗口加载的时候我们让他居中
int left = Screen.PrimaryScreen.Bounds.Width / 2 - this.Width / 2;
int top = Screen.PrimaryScreen.Bounds.Height / 2 - this.Height / 2;
this.Location = new Point(left, top);
//我们先要在整个菜单中找到每一个菜的盒子
//flowLayoutPanel1这是我们装整个菜单的盒子
foreach (Control item in flowLayoutPanel1.Controls)
{
//创建新的button按钮
Button bt = new Button();
//给新创建的button按钮设置字体颜色
bt.ForeColor = Color.DarkRed;
//给新创建的button按钮设置背景颜色
bt.BackColor = Color.LightGray;
//在每一个菜的盒子中找到lable
//Panel这是每一个菜的盒子
foreach (Control lab in ((Panel)item).Controls)
{
//判断标签是index的label则是写编号的
if (lab.Tag.ToString()=="index")
{
//label的编号赋给button作为编号
bt.Text = lab.Text;
//现在给每一个button按钮添加标签 用button的编号作为其标签
bt.Tag = bt.Text;
//顺便我们给每个菜的盒子也添加上标签 也就是用菜品的名字来做标签
item.Tag = lab.Text;
}
}
//我们给新添加的button按钮设置大小 既宽和高
bt.Size = new Size(70, 40);
//然后我们将生成的button装入button的盒子中 flowLayoutPanel2这个盒子中
flowLayoutPanel2.Controls.Add(bt);
//然后我们给button添加点击事件
bt.Click += Bt_Click;
}
}
//sender获取事件发起者的对象
int a = 0;
private void Bt_Click(object sender, EventArgs e)
{
//sender的本质是button的对象
string dtindex = (sender as Button).Tag.ToString();
//然后我们在整个菜单中找到每一个装有菜品的盒子
foreach (Control item in flowLayoutPanel1.Controls)
{
//找到按钮所对应的button对象
if(item.Tag.ToString() == dtindex)
{
//获取所有菜单的label
foreach (Control lab in ((Panel)item).Controls)
{
//创建一个新的label
Label labname = new Label();
//给新的labname设置一个颜色
labname.ForeColor = Color.Blue;
//给新创建的labname设置字体以及字体的大小
labname.Font = new Font("楷体",15);
//判断标签是name的label则是菜品
if (lab.Tag.ToString() == "name")
{
//把标签名称为name的lab的内容赋给新的label
labname.Text = lab.Text;
}
//设置新生成的label能根据内容撑开
labname.AutoSize = true;
//把新生成的label写到flowLayoutPanel3中
flowLayoutPanel3.Controls.Add(labname);
//获取金额的label标签
if (lab.Tag.ToString() == "paice")
{
//
a += Convert.ToInt16(lab.Text);
//label
label39.Text = a.ToString();
}
}
}
}
}
}
}