I am making an order taking software for a pizza restaurant in c# WinForms. i am having trouble adding a price value to a button. so when the button is clicked, I would like it to show the size, name, and price of the item in a Listbox. here is my code so far, not sure if I am heading in the right direction or not.
namespace BPOSnew
{
public partial class Form2 : Form
{
private readonly SelectedPizza _selectedPizza;
public Form2()
{
InitializeComponent();
// Assigning Pizza Sizes
BtnKids.Tag = "Kids";
BtnKids.Click += ButtonSizeClick;
BtnSmall.Tag = "Small";
BtnSmall.Click += ButtonSizeClick;
BtnMeduim.Tag = "Meduim";
BtnMeduim.Click += ButtonSizeClick;
BtnLarge.Tag = "Large";
BtnLarge.Click += ButtonSizeClick;
// Assigning Pizza Names
BtnHawaiian.Tag = "Hawaiian";
BtnHawaiian.Click += ButtonNameClick;
BtnMeatLovers.Tag = "Meat Lovers";
BtnMeatLovers.Click += ButtonNameClick;
BtnCapricciosa.Tag = "Capricciosa";
BtnCapricciosa.Click += ButtonNameClick;
BtnMargherita.Tag = "Margherita";
BtnMargherita.Click += ButtonNameClick;
_selectedPizza = new SelectedPizza();
}
public class SelectedPizza
{
public string Size { get; set; }
public string Name { get; set; }
public string Price { get; set; }
public string Format() => $"{Size} {Name} {Price}"; // Format inside Listbox
}
private void ButtonSizeClick(object sender, EventArgs e)
{
var button = (Button)sender;
_selectedPizza.Size = button.Tag.ToString(); // Adds pizza size to order listbox
}
private void ButtonNameClick(object sender, EventArgs e)
{
var button = (Button)sender;
_selectedPizza.Name = button.Tag.ToString();
listBox1.Items.Add(_selectedPizza.Format()); // Adds pizza name to order listbox
}
How about something like
private void ButtonSizeClick(object sender, EventArgs e)
{
var button = (Button)sender;
_selectedPizza.Size = button.Tag.ToString(); // Adds pizza size to order listbox
if (_selectedPizza.Name != null)
_selectedPizza.Price = getPrice(_selectedPizza.Size);
}
private void ButtonNameClick(object sender, EventArgs e)
{
var button = (Button)sender;
_selectedPizza.Name = button.Tag.ToString();
if (_selectedPizza.Size != null)
_selectedPizza.Price = getPrice(_selectedPizza.Size);
listBox1.Items.Add(_selectedPizza.Format()); // Adds pizza name to order listbox
}
private string getPrice(string sSize)
{
string sPrice = "0.00";
if (sSize == "Kids")
sPrice = "4.99";
if (sSize == "Small")
sPrice = "5.99";
//etc...
return sPrice;
}
The assumption here is that price is based only on the size of the pizza.