Search code examples
c#winformsbuttonint

How to add money value to button c#


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
    }

Solution

  • 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.