Первое, что нужно сделать, это определить класс Product с двумя отдельными свойствами: одно для Имя и одно для Цена .
Затем переопределить Метод 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")}";
}
}
Теперь в конструкторе форм вы можете создать список продуктов ( статически в этом примере) и передайте этот список свойству DataBource объекта ListBox.
Наконец, задача для вычисления суммы - это простой вызов Linq расширению Sum и передача результата в текстовое свойство 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});
}