[英]Drag a item from Treeview to ListBox on Windows Forms (C#)
[英]Adding a price to each item in a listbox - C# .Net, Windows Forms Applications
我正在嘗試使用 c# 構建 Windows 窗體應用程序。 該應用程序的主要功能是允許用戶將商品添加到購物車(可能是列表框)並匯總(到標簽文本)添加到該購物車的產品的總價格。 此外,可以多次添加產品。 所以基本上它可以被稱為購物車應用程序。
我的問題是,如何計算添加到購物車中的商品的總價? 因為,首先,我已將所有產品作為字符串列表添加到此列表框(使用Listbox.Items.Add("Product1")
。所以我不知道如何為每個產品添加價格(字符串元素)這個列表),然后可以添加它。
我應該以某種方式將產品添加為Product Class
類型的對象(具有 2 個屬性、名稱和價格)? 如果是這樣,我如何僅將 name 屬性傳遞給列表框項列表?
到目前為止,這是我的一些主要代碼:
public Form1()
{
InitializeComponent();
Product products = new Product();
AddProducts();
}
List<string> productList = new List<string>();
public void AddProducts()
{
productNames.Add("Product X");
productNames.Add("Product Z");
foreach (var product in productList)
{
ProductListBox.Items.Add(product);
}
}
首先要做的是定義具有兩個單獨屬性的 Product 類,一個用於Name ,一個用於Price 。
然后覆蓋ToString()方法以在單個字符串中返回名稱和價格轉換為字符串或僅返回名稱。
如果要在 ListBox 中顯示的一行中顯示產品名稱及其價格,則需要此覆蓋。 實際上,ListBox 控件在通過 DataSource 綁定時,會查看綁定類的 ToString 方法來表示其項目。
public class Product
{
public string Name { get; set; }
public decimal Price { get; set; }
// This returns both Name and Price, but, of course, if you want only
// the name just return $"{Name}"
public override string ToString()
{
return $"{Name} - {Price.ToString("C")}";
}
}
現在,在您的表單構造函數中,您可以創建產品列表(在本例中是靜態的)並將該列表傳遞給 ListBox 的 DataSource 屬性。
最后,計算總數的任務只是對Sum擴展的簡單 Linq 調用,並將結果傳遞給 Label 文本屬性。
List<Product> products = new List<Product>();
public Form1()
{
InitializeComponent();
AddProducts();
ProductListBox.DataSource = products;
labelTotalPrice.Text = products.Sum(x => x.Price).ToString("C");
}
public void AddProducts()
{
products.Add(new Product {Name = "Product X", Price = 10.4m});
products.Add(new Product {Name = "Product Z", Price = 1.5m});
products.Add(new Product {Name = "Product K", Price = 7.32m});
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.