但是必须对flowLayoutPanel进行边框设置,否则会不可见
private void Form1_Load(object sender, EventArgs e)
{
this.Text ="地方点餐系统";
//为菜品添加点击后的按钮
//采用foreach循环进行遍历
//control:控件类型
foreach (Control item in flowLayoutPanel1.Controls)//遍历 flowLayoutPanel1中的控件
{
//实例化button
Button bt = new Button();
bt.Size = new Size(50,50);//设置按钮的大小
bt.Font = new Font("楷体",20f);//设置按钮中的字体
bt.Tag = item;//对item进行封装以便于点击按钮事件时可以获取想要的东西
//遍历 flowLayoutPanel中的label对tag进行获取并生成对应文本的button按钮
foreach (Control control in item.Controls)//遍历flowLayoutPanel1中对应的label控件
{
if (control.Tag.ToString()=="index")
{
bt.Text =control.Text;//将获取到的control文本值赋给按钮bt
}
}
flowLayoutPanel10.Controls.Add(bt);//向要显示的flowLayoutPanel中添加对应的按钮
bt.Click += Btn_Click;//添加点击事件
bt.AutoSize = true;//自动适应内容的大小
}
}
private void Btn_Click(object sender, EventArgs e)
{
Button index = (Button)sender;//sender的对象是button
Control fz = (Control)index.Tag;//对获取到的tag进行控件类型的转换
//实例化label控件
Label lb = new Label();
lb.Font = new Font("楷体", 20f);//设置label中的字体
foreach (Control item in fz.Controls)//对获取到tag内容的进行遍历
{
if (item.Tag.ToString()=="name")//判断获取到的tag是否等于name,也就是菜名
{
lb.Text = item.Text;
}
lb.AutoSize = true;//显示完整的label名称
flowLayoutPanel11.Controls.Add(lb);//向要显示的flowLayoutPanel中添加对应的label
}
int count=0;//定义一个变量用于计算最下面的价格相加问题
if (item.Tag.ToString()=="money")//判断获取到的tag是否等于money,也就是价格
{
count += int.Parse(item.Text);
}
label27.Text = count + "元";
//bt为你前面所实例化按钮的名称
bt.Click += Btn_Click;//添加点击事件
bt.Click -= Btn_Click;//取消点击事件
Button index = (Button)sender;//sender的对象是button
bt.Tag = item;//对item进行封装以便于点击按钮事件时可以获取想要的东西
Control fz = (Control)index.Tag;//对获取到的tag进行控件类型的转换