Сравните ListBox и список, затем распечатайте в Label - PullRequest
0 голосов
/ 23 октября 2018

Я использую ListBox, в котором хранятся такие предметы, как походное снаряжение.У ListBox будут палатка, стулья для кемпинга, кофе и т. Д.
Затем я создал список, в котором указаны цены на каждый предмет, который называется lstprices.

.запись появится в другом ListBox при извлечении цены из lstprices и добавит ее к subtotal Label.

try
{
    if (lstItems.Items.Count > 0)
    {
        lstOrder.Items.Add(lstItems.SelectedItem.ToString());
    }
}
catch (Exception ex)
{
    MessageBox.Show(ex.Message);
}

Я предполагаю, что каким-то образом добавлюинформация для lstOrder.Items, так как я знаю номера элементов, но не понимаю, как их отобразить в моем Label.
Надеюсь, это имеет смысл.

Также для этого утверждения:

decimal STotal = decimal.Parse(lblSubtotal.Text.ToString());

Ошибка при указании неправильного формата при двойном щелчке элемента.

1 Ответ

0 голосов
/ 23 октября 2018

Извините, я не могу комментировать, поэтому должен опубликовать ответ:

, если вам нужно отслеживать несколько свойств объекта, то вы должны создать его класс, например (объектно-ориентированное программирование):

public class Product 
{
    public string Name {get;set;}
    public double Price {get;set;}

    public Product(string name, double price) 
    {
       Name = name;
       Price = price
    }
}

таким образом вы можете просто сделать: Product chair = new Product("Camping Chair", 12.99); или вы можете заполнить список

List<Product> products = new List<Product>()
                         {
                          new Product("Camping Chair", 12.99),
                          new Product("Tent", 25.99)
                         }

, а затем отобразить ваши продукты в виде списка или таблицы данных и т. Д., Это будет лучшим подходомзатем ведение двух списков с именами и ценами.

это также облегчит работу со списком, так как у него есть свойство с именем SelectedItem, которое вы можете привести к своему классу, а затем сослаться на его свойства, например:

    Product selectedProduct = myListbox.SelectedItem as Product;
    myLabel.Text = selectedProduct?.Price.ToString();

РЕДАКТИРОВАТЬ:

, поскольку классы не охвачены, вы можете использовать Dictionary<string,double>, чтобы отслеживать ваши цены и ключи (название продукта) или, по крайней мере,a List<KeyValuePair<string,double>>:

Ниже приведен краткий пример, с которого можно начать:

 Dictionary<string, double> products = new Dictionary<string, double>()
        {
            {"Camping Chair",33.0},
            {"Stool",12.99},
        };
 //accessing the price via the key, which 
 var price = products.Where(x => x.Key == "Stool").SingleOrDefault();

 // you could then pass in the selected item of your list box as string
 var price = products.Where(x => x.Key == listbox.SelectedItem.ToString()).SingleOrDefault();

Подробнее о словарь в msdn

Подробнее о KeyValuePair на MSDN

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...