學習 動態產生元件、委派、共用一個事件
學習 dataGridView
學習 轉換型別
------------------------------------------------
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace POS
{
public partial class Form1 : Form
{
private string sel_Name;
private int sel_Name_index;
private string sel_Sugar;
private string sel_Ice;
private int sel_Size; // 大中小,用index記錄
private double sel_Price;
private int sel_Number;
private double sel_Subtotal;
public Form1()
{
InitializeComponent();
// DataGridView 銷售項目
DataGridViewRowCollection rows = dataGridViewMenu.Rows;
rows.Add(new Object[] { "泡沫紅茶", 20, 15, -1 });
rows.Add(new Object[] { "阿薩姆紅茶", 20, 15, -1 });
rows.Add(new Object[] { "茉香綠茶", 20, 15, -1 });
rows.Add(new Object[] { "文山青茶", 25, 20, -1 });
rows.Add(new Object[] { "凍頂烏龍茶", 25, 20, -1 });
rows.Add(new Object[] { "洛神花茶", 30, 25, -1 });
rows.Add(new Object[] { "仙草甘茶", 30, 25, -1 });
rows.Add(new Object[] { "珍珠綠茶", 30, 20, -1 });
rows.Add(new Object[] { "珍珠紅茶", 30, 20, -1 });
rows.Add(new Object[] { "珍珠青茶", 35, 25, -1 });
rows.Add(new Object[] { "珍珠桂花茶", 35, 25, -1 });
rows.Add(new Object[] { "珍珠奶茶", 45, 35, 30 });
rows.Add(new Object[] { "珍珠奶綠", 45, 35, 30 });
rows.Add(new Object[] { "椰果奶茶", 45, 35, 30 });
rows.Add(new Object[] { "布丁奶茶", 45, 35, 30 });
rows.Add(new Object[] { "仙草凍奶茶", 45, 35, 30 });
}
private void Form1_Load(object sender, EventArgs e)
{
Button[] lbtn = new Button[40]; // 動態產生Button
for (int i = 0; i < 24; i++)
{
if (i < dataGridViewMenu.Rows.Count && dataGridViewMenu.Rows[i].Cells[0].Value != null)
{
lbtn[i] = new Button();
}
else
{
break;
}
lbtn[i].Name = "linkButton" + i;
lbtn[i].Text = dataGridViewMenu.Rows[i].Cells[0].Value.ToString();
lbtn[i].Height = 50;
lbtn[i].Width = 100;
lbtn[i].Left = i % 3 * lbtn[i].Width;
lbtn[i].Top = i / 3 * lbtn[i].Height;
lbtn[i].Click += new EventHandler(linkbutton_Click); // 共用一個事件
panelMenu.Controls.Add(lbtn[i]);
}
}
// 選取數量時,自動計算小結
private void calculateSubTotal()
{
sel_Number = (int)numericUpDownNumber.Value;
sel_Subtotal = sel_Price * (double)sel_Number;
textBoxSubtotal.Text = sel_Subtotal.ToString();
}
// 動態產生的Button,共用一個事件
private void linkbutton_Click(object sender, EventArgs e)
{
Button getButton = sender as Button; // 將sender參數轉型成Button,得知按了哪一個
// 更動品名時,預設為大杯
sel_Name_index = getButton.TabIndex; // 更新品名
sel_Size = listBoxLMS.SelectedIndex = listBoxLMS.FindString("大杯");
labelSize.Text = "大杯";
sel_Name = Convert.ToString(dataGridViewMenu.Rows[sel_Name_index].Cells[0].Value);
labelName.Text = Convert.ToString(dataGridViewMenu.Rows[sel_Name_index].Cells[0].Value);
sel_Price = Convert.ToDouble(dataGridViewMenu.Rows[sel_Name_index].Cells[sel_Size + 1].Value); // 參考 sel_Size 載入價格
textBoxPrice.Text = Convert.ToString(dataGridViewMenu.Rows[sel_Name_index].Cells[sel_Size + 1].Value);
calculateSubTotal();
}
private void numericUpDownNumber_ValueChanged(object sender, EventArgs e)
{
calculateSubTotal();
}
private void listBoxSugar_SelectedIndexChanged(object sender, EventArgs e)
{
sel_Sugar = listBoxSugar.SelectedItem.ToString();
labelSugar.Text = listBoxSugar.SelectedItem.ToString();
}
private void listBoxIce_SelectedIndexChanged(object sender, EventArgs e)
{
sel_Ice = listBoxIce.SelectedItem.ToString();
labelIce.Text = listBoxIce.SelectedItem.ToString();
}
private void listBoxLMS_SelectedIndexChanged(object sender, EventArgs e)
{
double price = Convert.ToDouble(dataGridViewMenu.Rows[sel_Name_index].Cells[listBoxLMS.SelectedIndex + 1].Value);
if (price < 0)
{
MessageBox.Show("此品項不賣此大小");
labelSize.Text = ".........";
sel_Size = 0;
return;
}
sel_Size = listBoxLMS.SelectedIndex; // 更新大小杯
labelSize.Text = listBoxLMS.SelectedItem.ToString();
sel_Price = Convert.ToDouble(dataGridViewMenu.Rows[sel_Name_index].Cells[sel_Size + 1].Value); // 參考 sel_Size 載入價格
textBoxPrice.Text = Convert.ToString(dataGridViewMenu.Rows[sel_Name_index].Cells[sel_Size + 1].Value);
calculateSubTotal();
}
private void buttonAdd_Click(object sender, EventArgs e)
{
if ( labelName.Text == ".........") { MessageBox.Show("品名尚未確定"); return; }
if (labelSugar.Text == ".........") { MessageBox.Show("甜度尚未確定"); return; }
if ( labelIce.Text == ".........") { MessageBox.Show("冰塊尚未確定"); return; }
if ( labelSize.Text == ".........") { MessageBox.Show("大小尚未確定"); return; }
calculateSubTotal(); // 計算小計
listBoxLMS.SelectedIndex = sel_Size; // 以值為主
dataGridViewOrder.Rows.Add(new Object[] { sel_Name, sel_Sugar, sel_Ice, listBoxLMS.SelectedItem.ToString(), sel_Price, sel_Number, sel_Subtotal }); // 加入訂單
calculateTotal(); // 計算總金額
// 初始
labelName.Text = ".........";
labelSugar.Text = ".........";
labelIce.Text = ".........";
labelSize.Text = ".........";
textBoxPrice.Text = "";
numericUpDownNumber.Value = 1;
textBoxSubtotal.Text = "";
}
private void calculateTotal()
{
int cup = 0;
double total = 0.0;
for (int i = 0; i < dataGridViewOrder.Rows.Count; i++)
{
DataGridViewRow row = dataGridViewOrder.Rows[i];
if (row.Cells[0].Value != null)
{
cup += (int)row.Cells[5].Value;
total += (double)row.Cells[6].Value;
}
}
textBoxCup.Text = cup.ToString();
textBoxTotal.Text = total.ToString();
}
private void buttonOrder_Click(object sender, EventArgs e)
{
dataGridViewOrder.Rows.Clear();
textBoxCup.Text = "";
textBoxTotal.Text = "";
}
}
}
沒有留言:
張貼留言