Редактировать элемент списка на основе click_event c# - PullRequest
0 голосов
/ 07 февраля 2020

Я создал список

        ListView ListView1 = new ListView();
        ListView1.Location = new System.Drawing.Point(12, 12);
        ListView1.Name = "ListView1";
        ListView1.Size = new System.Drawing.Size(280, 300);
        ListView1.BackColor = System.Drawing.Color.White;
        ListView1.ForeColor = System.Drawing.Color.Black;
        ListView1.View = View.Details;
        ListView1.GridLines = true;
        ListView1.FullRowSelect = true;
        ListView1.Columns.Add("ProductName", 100);
        ListView1.Columns.Add("Quantity", 100);
        ListView1.Columns.Add("Price", 100);

и добавляю в него элементы, используя следующий код:

b.Click += (s, e) => {
                    string[] arr = new string[4];
                    ListViewItem itm;
                    arr[0] = b.Text;
                    arr[1] = x.ToString();
                    arr[2] = price;
                    itm = new ListViewItem(arr);
                    ListView1.Items.Add(itm);
                    x++;
                    };

b - автоматически генерируемая кнопка, чего я хочу добиться, просто переменная x будет увеличиваться со значением 1 каждый раз, когда я нажимаю на кнопку b, а x указывает количество. Что я хочу: когда я нажимаю на кнопку b, количество изменится для текущего элемента, у которого есть столбец ["Productname"] = b.Text Что я получаю: количество меняется, но элемент повторно вставляется, поэтому я хочу проверьте, существует ли элемент первым (на основе столбца ["Productname"]) и если он существует, то количество увеличивается на 1.

image_to_help_understand

Подробнее Мне жаль, если это становится слишком длинным, но у меня просто есть несколько автоматически сгенерированных кнопок, и каждая кнопка представляет продукт, когда пользователь нажимает на продукт, он добавляется в список (чтобы купить его позже), и если клиент щелкает один и тот же продукт n раз, количество должно стать количество = n без добавления элемента в другой раз. спасибо всем и извините за длинный пост.

1 Ответ

0 голосов
/ 07 февраля 2020

Вставлять значения в пользовательский интерфейс не очень хороший дизайн. У меня есть эти изменения из моих предыдущих комментариев. Используйте BindingList, publi c класс Product: INotifyPropertyChanged и замените ListView на DataGridView. Это просто делает жизнь намного проще, а код - простым. Создание ListBoxItems по своему усмотрению НЕ является хорошим способом ведения дел. Кстати: чтобы найти продукт, вы просто используете запрос LINQ на ProductCollection. Нет поиска в интерфейсе.

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