C#實現(xiàn)簡單點餐系統(tǒng)
本文實例為大家分享了C#實現(xiàn)簡單點餐系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下
實現(xiàn)簡單點餐系統(tǒng)剖析
1、設(shè)計界面(給菜品的序號(index),名稱(name),單價(money)加上Tag以便獲取此控件中的數(shù)據(jù))、設(shè)計界面所涉及到的控件(FlowLayoutPAnel,label,button)
2、根據(jù)菜品數(shù)量來添加對應(yīng)的菜品序號按鈕(有幾個菜品添加幾個按鈕)(用到foreach遍歷循環(huán))
3、通過2個foreach遍歷控件來獲取菜品的序號并將菜品的序號添加到按鈕中
4、添加按鈕單擊事件(代碼實現(xiàn)添加事件)(實現(xiàn)單擊按鈕將按鈕序號對應(yīng)的菜名和菜品價格分別添加到需要的位置)
5、添加已點菜單中菜名的單擊事件(實現(xiàn)點擊已點菜單中的菜品讓其刪除并且減少相應(yīng)的消費(fèi)金額)
此案例中所用到Tag屬性以及sender參數(shù)解釋:
- Tag:獲取或設(shè)置包含有關(guān)控件的數(shù)據(jù)的對象
- sender:事件發(fā)起者是誰,誰就是sender
注意:要用sender參數(shù)必須先用sender參數(shù)的類型接收sender
代碼創(chuàng)建對象以及代碼添加事件
- 代碼創(chuàng)建對象Label lb = new Label();
- 代碼添加事件btn.Click += But_Click;步驟:先鍵入需要添加事件的對象然后鍵入點選擇需要的事件+=Tab
Tag的用法(先存后取):
1、需要的屬性添加到Tag中
2、在需要時只需把Tag賦值給對象即可獲取到需要的屬性
設(shè)計界面

具體代碼如下:
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 Test_Order_system
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
this.CenterToScreen();//將窗體顯示在屏幕中央
//先設(shè)計界面
//獲取FlowLayoutPanel中的控件對應(yīng)數(shù)據(jù)以及區(qū)分各個控件則需要給FlowLayoutPanel中控件加tag標(biāo)簽
// 序號:index 菜名:name 價格:money
//根據(jù)菜品數(shù)量來添加對應(yīng)的菜品序號按鈕(有幾個菜品添加幾個按鈕)
foreach (Control item in flowLayoutPanel1.Controls)//獲取FlowLayoutPanel1中的控件
{
//創(chuàng)建對象(new)按鈕
Button btn = new Button();//實例化
btn.Size = new Size(70,45);//設(shè)置按鈕的大小
btn.Font = new Font("黑體",20f);//設(shè)置按鈕文本顏色
btn.Tag = item;//將item控件裝進(jìn)tag中
//要將菜品的序號添加到but中,但是菜品序號在item的控件中,則需要再次獲取item中的控件
foreach (Control lab in item.Controls)//在item控件集合中尋找控件命名為lab
{
if (lab.Tag.ToString()=="index")
{
btn.Text = lab.Text;//將獲取到的菜品序號添加到btn中
}
}
flowLayoutPanel2.Controls.Add(btn);//將按鈕添加到FlowLayoutPanel2中
btn.Click += But_Click;//添加單擊事件
}
}
int count = 0;
//單擊相應(yīng)按鈕時將該按鈕序號所對應(yīng)的菜品名稱添加到FloowLayoutPanel3中,將總金額添加到label33中
private void But_Click(object sender, EventArgs e)
{
//因為菜品名稱以及單價在item控件中,所以需要獲取到item控件
//在當(dāng)前事件中不能直接獲取item控件所以需要給btn添加標(biāo)簽,將item控件裝進(jìn)btn標(biāo)簽中
//然后在當(dāng)前事件中通過對sender接收其次來獲取item控件
//sender:事件發(fā)起者是誰誰就是sender(當(dāng)點擊第一個按鈕,第一個按鈕就是sender)
Button clickbtn=(Button)sender;//先將sender用button接收
//通過Tag間接拿到item控件
Control item2 = (Control)clickbtn.Tag;//將item用控件接收
Label lb = new Label();
lb.Font = new Font("黑體",12f,FontStyle.Bold);
foreach (Control lab3 in item2.Controls)
{
if (lab3.Tag.ToString()=="name")
{
lb.Text=lab3.Text;//將獲取到的菜名添加到lb中
}
if (lab3.Tag.ToString()=="money")
{
count+=int.Parse(lab3.Text);
lb.Tag = lab3.Text;
}
}
flowLayoutPanel3.Controls.Add(lb);//將lb添加到FlowLayoutPanel3中
label33.Text = count+"元";//將count賦值給label33
lb.Click += Lb_Click;
}
//實現(xiàn)點擊已點菜單中的菜品讓其刪除并且減少相應(yīng)的消費(fèi)金額
private void Lb_Click(object sender, EventArgs e)
{
Label lb2=(Label)sender;//sender就是事件發(fā)起者lb,所以用Label接收
//刪除已點菜品
lb2.Dispose();
//減少相應(yīng)的消費(fèi)金額
count-=int.Parse(lb2.Tag.ToString());
label33.Text = count+"元";//將count賦值給label33
}
}
}
效果圖
加載時

點擊按鈕后

點擊已點菜單中的烤腰花和烤板筋

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
c#基于Win32Api實現(xiàn)返回Windows桌面功能
本文分享下回到桌面功能的實現(xiàn)方法,效果與快捷鍵(Win+D)相同。有此需求的朋友可以參考下2021-05-05

