.NET 3.x Добавление данных из ListBox в ListView с проверкой - C#
Формулировка задачи:
Здравствуйте, господа знатоки.
Есть Listview с колонками 1,2,3. Выглядит примерно так:
---
Название Количество Свойства
оранжевый 1 10000
Капуста 1 50000
Червяк 1 300
---
ListView заполняется из элементов типа ListBox, присутствующих на форме. Вот один из примеров такого ListBox:
---
капуста
морковь
червяк
дыня
...
---
Подразумеваемый механизм работы:
1. Тыкаем кнопку, относящуюся к ListBox. Выбранный элемент (SelectedItem), например "червяк" попадает в ListView. В ListBox у него видно только название "червяк", а "свойства" пользователю не видны.
2. Если в ListView уже есть такой item "червяк", то инфу из колонки #1 не меняем, в колонке #2 мы делаем ++, а в колонке #3 делаем текущий+добавляемый. Должно получиться так:
---
...
червяк 2 600
3. И, соответственно, если ListView нет элемента "червяк", то росто добавляем всё, что нужно в однократном размере.
Как бы это выглядело в коде? Пока не могу найти, как организовать все эти проверки (есть-нет элемента).
Решение задачи: «.NET 3.x Добавление данных из ListBox в ListView с проверкой»
textual
Листинг программы
public partial class Form1 : Form { List<IndeterminateObject> _someObjects; public Form1() { InitializeComponent(); _someObjects = new List<IndeterminateObject>() { new IndeterminateObject("Капуста", 300), new IndeterminateObject("Лопата", 1200), new IndeterminateObject("Дыня", 220) }; objecstListBox.DisplayMember = "Name"; objecstListBox.DataSource = _someObjects; } private void ToListViewButton_Click(object sender, EventArgs e) { AddToListView((IndeterminateObject)objecstListBox.SelectedItem); } private void AddToListView(IndeterminateObject obj) { foreach (ListViewItem item in detailedObjListView.Items) { if (item.Text == obj.Name) { UpdateListViewItem(item, obj); return; } } UpdateListViewItem(detailedObjListView.Items.Add(string.Empty), obj); } private void UpdateListViewItem(ListViewItem item, IndeterminateObject obj) { List<IndeterminateObject> listObj = null; if (item.Tag != null) { listObj = (List<IndeterminateObject>)item.Tag; listObj.Add(obj); item.Text = obj.Name; item.SubItems[1].Text = listObj.Count.ToString(); item.SubItems[2].Text = (obj.Property * listObj.Count).ToString(); } else { listObj = new List<IndeterminateObject>(); listObj.Add(obj); item.Tag = listObj; item.Text = obj.Name; item.SubItems.Add(listObj.Count.ToString()); item.SubItems.Add((obj.Property * listObj.Count).ToString()); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д