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

Самое умное что мне пришло в голову это создать айтем с ключем и 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
Привязать объект к item в ListView.
    #38113254
фиганыч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7,

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

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

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



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

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

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

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

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

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

В C# используется преимущественно ссылочно-объектная модель.
...
Рейтинг: 0 / 0
Привязать объект к item в ListView.
    #38115375
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А ну понятно - класс он ведь ссылочный тип, передаем адресс.
Тогда воникает другой вопрос. А как по клику на айтеме отобразить поля обекта в контролах? Скажем textBoxPrec.Text = test.Precondition;
...
Рейтинг: 0 / 0
Привязать объект к item в ListView.
    #38115387
фиганыч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Привязать объект к item в ListView.
    #38115458
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Большое спасибо! И еще один вопрос в примере listViewTests.Items[0].Tag = key; мы предполагаем , что знаем индекс айтема.
Но если я создаю айтем
Код: c#
1.
2.
                                             
  listViewTests.Items.Add("MyTest");


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


И почитайте документацию по классу ListView.ListViewItemCollection , там рассказывается и о методе(ах) Add и о получении элемента по ключу (имени).
...
Рейтинг: 0 / 0
Привязать объект к item в ListView.
    #38115765
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
больное спасибо! буду пробовать.
...
Рейтинг: 0 / 0
Привязать объект к item в ListView.
    #38115924
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мда...и тут я возращаюсь к своему первому вопросу - как присваивать имена?
Допустим первый
Код: 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
Привязать объект к item в ListView.
    #38117369
sld
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sld
Гость
Код: c#
1.
Guid key=Guid.NewGuid().ToString();
...
Рейтинг: 0 / 0
Привязать объект к item в ListView.
    #38117426
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
прикольный фичер, не знал что такое есть в шарпе. спасибо.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Привязать объект к item в ListView.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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