【发布时间】:2020-11-03 06:33:00
【问题描述】:
我正在用 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
}
【问题讨论】:
-
您可以将
SelectedPizza对象添加到ListBox,而不是字符串,然后使用按钮配置 一个新的SelectedPizza对象。因此,当您选择一个 ListBox 项目后,您可以将SelectedItem转换为SelectedPizza并直接读取所有对象的详细信息。 -
我不明白:P
-
您的代码有什么问题?您看到的行为与您期望的行为是什么?