Как добавить денежную ценность кнопке c# - PullRequest
0 голосов
/ 14 июля 2020

Я делаю программу приема заказов для пиццерии в c# WinForms. Мне не удается добавить значение цены к кнопке. поэтому, когда кнопка нажата, я хотел бы, чтобы она отображала размер, имя и цену элемента в списке. вот мой код до сих пор, не уверен, иду ли я в правильном направлении или нет.

  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
    }

1 Ответ

0 голосов
/ 14 июля 2020

Как насчет чего-то вроде


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;

        }

Предполагается, что цена зависит только от размера пиццы.

...