Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > ListView


Автор: jorikdima 18.2.2008, 21:53
Приветствую. 
Есть ListView в нем строки, разбитые по колонкам (вид ListView как detailed). Хочу не только просто добавлять строку в ListView но еще и чтоб к каждой строке привязывался объект произвольного типа (неотображаемый). Ну например, я храню в ListView записную книжку и там в столбцах имя фамилия, а я хочу к каждой строке еще хранить структуру в которой буду хранить служебную (неотображаемую) информацию типа когда я занес этого человека в список и т.д. 
Спасибо.

Автор: Ctrl 19.2.2008, 00:18
Простейший способ - отнаследоваться от ListViewItem  и добавить туда все что необходимо:
Код

using System;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication18 {
    public partial class Form1 : Form {
        public Form1() {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e) {
            MyListViewItem item1 = new MyListViewItem();
            MyListViewItem item2 = new MyListViewItem();
            item1.Info = new ItemInfo();
            item1.Text = "MyFirstItem";
            item2.Info = new ItemInfo();
            item2.Text = "MySecondItem";
            listView1.Items.AddRange(new ListViewItem[] { item1, item2 });
        }
    }
    public class ItemInfo {
        string someDataCore;
        public string SomeData {
            get { return someDataCore; }
            set { someDataCore = value; }
        }
    }
    public class MyListViewItem : ListViewItem {
        ItemInfo infoCore = null;
        public ItemInfo Info {
            get { return infoCore; }
            set { infoCore = value; }
        }
    }
}

Автор: jorikdima 19.2.2008, 10:25
Спасибо. Я тоже об этом подумал smile но уже после того как написал smile

Автор: QryStaL 19.2.2008, 10:33
Есть еще более простой способ.  smile 
Можно не заморачиваться с наследованием, а использовать свойство Tag.

ListViewItem.Tag Property 
Gets or sets an object that contains data to associate with the item. 
The Tag property can be used to store any object that you want to associate with an item. Although you can store any item, the Tag property is typically used to store string information about the item, such as a unique identifier or the index position of the item's data in a database.

Автор: jorikdima 19.2.2008, 12:04
Вот!!!

Спасибо! Я же знал  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)