Добавление дополнительных данных в WinForms ListViewItem - PullRequest
1 голос
/ 06 декабря 2010

Я новичок в WinForms и не могу понять, как добавить свои дополнительные данные в ListViewItem?Я помню, что в MFC я могу использовать SetItemDataPtr, но как это сделать в WinForms?

Ответы [ 4 ]

5 голосов
/ 06 декабря 2010

Наиболее рекомендуемый метод - создать собственный класс, производный от ListViewItem, и добавить экземпляры этого класса в ListView.Таким образом, вы можете хранить любые данные в элементах.

Это лучше, чем использование свойства Tag, по нескольким причинам:

  • Ваши данные элементов могут быть безопасными для типов, и вам не нужно будет приводить из Object при каждом доступе.
  • Вы можете сохранить более одного значения.
  • Это более правильно с точки зрения объектно-ориентированного программирования.
  • Вы оставляете свойство Tag свободным для использования потенциальными будущими расширениями.
2 голосов
/ 06 декабря 2010

Вы можете использовать свойство ListViewItem.Tag для хранения ссылки на любой объект, эквивалентный SetItemDataPtr ().Свойство Name может быть полезным в качестве ключа в словаре <>.И свойство Index может быть полезно для индексации List <>.Последние два подхода - лучшие решения, обычно вы хотите отделить данные от представления.

2 голосов
/ 06 декабря 2010

Вы искали в MSDN класс ListViewItem ?Там много информации и образцы.

            // Create three items and three sets of subitems for each item.
            ListViewItem item1 = new ListViewItem("item1",0);
            // Place a check mark next to the item.
            item1.Checked = true;
            item1.SubItems.Add("1");
            item1.SubItems.Add("2");
            item1.SubItems.Add("3");
            ListViewItem item2 = new ListViewItem("item2",1);
            item2.SubItems.Add("4");
            item2.SubItems.Add("5");
            item2.SubItems.Add("6");
            ListViewItem item3 = new ListViewItem("item3",0);
            // Place a check mark next to the item.
            item3.Checked = true;
            item3.SubItems.Add("7");
            item3.SubItems.Add("8");
            item3.SubItems.Add("9");
0 голосов
/ 06 декабря 2010

Один из способов: вам нужно создать свой собственный класс, например, MyItem и поместить элементы в List<MyItem>. Затем используйте привязку данных. Класс MyItem должен реализовывать метод ToString(), который возвращает строку, будет отображаться в ListView.

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