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

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

點(diǎn)擊按鈕后

點(diǎn)擊已點(diǎn)菜單中的烤腰花和烤板筋

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
使用C#實(shí)現(xiàn)RTP數(shù)據(jù)包傳輸 參照RFC3550
本篇文章小編為大家介紹,使用C#實(shí)現(xiàn)RTP數(shù)據(jù)包傳輸 參照RFC3550,需要的朋友參考下2013-04-04
C#設(shè)置軟件開(kāi)機(jī)自動(dòng)運(yùn)行的方法(修改注冊(cè)表)
這篇文章主要介紹了C#設(shè)置軟件開(kāi)機(jī)自動(dòng)運(yùn)行的方法,通過(guò)簡(jiǎn)單修改注冊(cè)表開(kāi)機(jī)啟動(dòng)項(xiàng)實(shí)現(xiàn)軟件的開(kāi)機(jī)啟動(dòng)功能,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下2016-06-06
C#實(shí)現(xiàn)在PDF文檔中應(yīng)用多種不同字體
在PDF文檔中,可繪制不同字體樣式、不同語(yǔ)言的文字,可通過(guò)使用Standard字體、TrueType字體、CJK字體或者自定義(私有)等字體類型。本文將具體介紹實(shí)現(xiàn)的方法,需要的可以參考一下2022-01-01
使用C#自制一個(gè)Windows安裝包的詳細(xì)過(guò)程
這篇文章主要介紹了如何使用C#自制一個(gè)Windows安裝包,文中通過(guò)圖文結(jié)合的方式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-07-07
利用WinForm實(shí)現(xiàn)上左右布局的方法詳解
現(xiàn)在90%的管理系統(tǒng)都是在用上左右這種布局方式,真可謂是經(jīng)典永流傳。本文將利用WinForm實(shí)現(xiàn)上左右布局這一布局效果,感興趣的可以學(xué)習(xí)一下2022-09-09
利用C#代碼實(shí)現(xiàn)圖片旋轉(zhuǎn)360度
本文介紹利用C#代碼實(shí)現(xiàn)圖片旋轉(zhuǎn)360度,具體實(shí)例代碼已附上,僅供大家參考,希望對(duì)大家有所幫助2016-11-11
Unity實(shí)現(xiàn)新手引導(dǎo)鏤空效果
這篇文章主要為大家詳細(xì)介紹了Unity實(shí)現(xiàn)新手引導(dǎo)的鏤空效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-02-02

