Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Привязать объект к item в ListView. / 15 сообщений из 15, страница 1 из 1
16.01.2013, 11:49
    #38111867
jenya7
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Привязать объект к item в ListView.
У меня есть объект ( класс) и мне нужно привязать его к айтему в листвъю.
Причем в листвъю реализован драг-дроп то есть айтемы могут меняться местами, соответственно объект не должен терять связь с айтемом.

Самое умное что мне пришло в голову это создать айтем с ключем и Dictionary.

Код: c#
1.
2.
3.
4.
Dictionary<string key, Test test> Tests = new Dictionary<string key, Test test>();
listViewTests.Items.Add(key, name, img_key); //new item creation
Test test = new Test();  //new object creation
Tests.Add(key, test);   //add to the collection



Вроде все работает - создается,удаляется. Единственно что не понятно по какому алгоритму создавать уникальный ключ.
...
Рейтинг: 0 / 0
17.01.2013, 05:15
    #38113254
фиганыч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Привязать объект к item в ListView.
jenya7,

не понял чего Вы делаете, если нужно просто привязать объект к итему - у итема есть get;set; property Tag - туда можно писать любой объект.
Код: c#
1.
2.
3.
listViewTests.Items[0].Tag = key; 
// или
listViewTests.Items[0].Tag = test; 
...
Рейтинг: 0 / 0
17.01.2013, 17:28
    #38114348
jenya7
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Привязать объект к item в ListView.
В принципе можно использовать и таг. Вопрос как генерировать уникальный ключ который свяжет айтем с экземпляром класса.
...
Рейтинг: 0 / 0
17.01.2013, 17:56
    #38114394
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Привязать объект к item в ListView.
jenya7, чего тут рассуждать-то? Читаем документацию на свойство Control.Tag и присваиваем тагу ссылку на объект.
Зачем какие-то ключи генерировать?

Вам и пример уже писали:
Код: c#
1.
listViewTests.Items[0].Tag = test;
...
Рейтинг: 0 / 0
18.01.2013, 01:25
    #38114718
jenya7
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Привязать объект к item в ListView.
skyANAjenya7, чего тут рассуждать-то? Читаем документацию на свойство Control.Tag и присваиваем тагу ссылку на объект.
Зачем какие-то ключи генерировать?

Вам и пример уже писали:
Код: c#
1.
listViewTests.Items[0].Tag = test;



Я что-то не совсем понимаю. Я могу создать экземпляр класса Test test = new Tets() и потом передать его как ссылку в таг?
Нет я конечно понимаю что таг он тоже человек, то есть объект, но все же...
...
Рейтинг: 0 / 0
18.01.2013, 04:37
    #38114763
Абсолют
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Привязать объект к item в ListView.
jenya7,

Да, можете.
...
Рейтинг: 0 / 0
18.01.2013, 10:39
    #38114941
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Привязать объект к item в ListView.
jenya7Я что-то не совсем понимаю. Я могу создать экземпляр класса Test test = new Tets() и потом передать его как ссылку в таг?
Нет я конечно понимаю что таг он тоже человек, то есть объект, но все же...Вам бы базовые знания подтянуть, вместо того, чтобы оперировать понятиями "таг он тоже человек".

Код: c#
1.
Test test = new Tets()

Тут Вы создаёте экземпляр класса (объект), и ссылку на него помещаете в переменную test.

Код: c#
1.
listViewTests.Items[0].Tag = test;

Тут Вы копируете ссылку на объект в свойство Tag.

В C# используется преимущественно ссылочно-объектная модель.
...
Рейтинг: 0 / 0
18.01.2013, 13:53
    #38115375
jenya7
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Привязать объект к item в ListView.
А ну понятно - класс он ведь ссылочный тип, передаем адресс.
Тогда воникает другой вопрос. А как по клику на айтеме отобразить поля обекта в контролах? Скажем textBoxPrec.Text = test.Precondition;
...
Рейтинг: 0 / 0
18.01.2013, 13:59
    #38115387
фиганыч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Привязать объект к item в ListView.
jenya7,
Код: c#
1.
2.
3.
4.
5.
6.
7.
...
listViewTests.ItemSelectionChanged += new ListViewItemSelectionChangedEventHandler(v_ItemSelectionChanged);
...
void v_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e)
{
   textBoxPrec.Text = (listViewTests.SelectedItems[0].Tag as Test).Precondition;
}
...
Рейтинг: 0 / 0
18.01.2013, 14:27
    #38115458
jenya7
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Привязать объект к item в ListView.
Большое спасибо! И еще один вопрос в примере listViewTests.Items[0].Tag = key; мы предполагаем , что знаем индекс айтема.
Но если я создаю айтем
Код: c#
1.
2.
                                             
  listViewTests.Items.Add("MyTest");


я не могу выбрать айтем по его лэйбл:
Код: c#
1.
2.
3.
             
 listViewTests.Items["MyTest"].Tag = key;  //так не работает
 
...
Рейтинг: 0 / 0
18.01.2013, 16:31
    #38115696
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Привязать объект к item в ListView.
jenya7, попробуйте так:
Код: c#
1.
2.
listViewTests.Items.Add(new ListViewItem("MyText") { Name = "MyName" });
listViewTests.Items["MyName"].Tag = key;


И почитайте документацию по классу ListView.ListViewItemCollection , там рассказывается и о методе(ах) Add и о получении элемента по ключу (имени).
...
Рейтинг: 0 / 0
18.01.2013, 17:23
    #38115765
jenya7
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Привязать объект к item в ListView.
больное спасибо! буду пробовать.
...
Рейтинг: 0 / 0
18.01.2013, 19:24
    #38115924
jenya7
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Привязать объект к item в ListView.
Мда...и тут я возращаюсь к своему первому вопросу - как присваивать имена?
Допустим первый
Код: c#
1.
2.
listViewTests.Items.Add(new ListViewItem("MyText") { Name = "MyName" });
listViewTests.Items["MyName"].Tag = key;


Какой будет второй? Name = "MyName1"? Name = "MyName01"? Вопрос нужно ли уникальное имя.
Допустим у меня уже есть айтем с таким именем "MyName". Тогда listViewTests.Items["MyName"].Tag = key; это к какому айтему обращение?
...
Рейтинг: 0 / 0
21.01.2013, 09:20
    #38117369
sld
sld
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Привязать объект к item в ListView.
Код: c#
1.
Guid key=Guid.NewGuid().ToString();
...
Рейтинг: 0 / 0
21.01.2013, 10:04
    #38117426
jenya7
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Привязать объект к item в ListView.
прикольный фичер, не знал что такое есть в шарпе. спасибо.
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Привязать объект к item в ListView. / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]