.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());
            }
        }
    }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.538 из 5
Похожие ответы