Как заставить ListBox хранить структуру данных?
От: Brovi  
Дата: 01.12.03 15:13
Оценка:
Привет, программирующая общественность.
Пытаюсь сделать класс на основе ListBox-а, в котором хранится не строка, а какая-нибудь структура данных. Как подсунуть ListBox-у свою структуру на хранение?(поскольку не хотелось-бы добавлять динамические массивы в класс т.к. остальное все устраивает) Была мысль упаковать мою структуру в строку, для чего нужно заменить метод "ListBox.Items.Add" на свой, но че-то не пойму, как до него добраться(т.к. он является методом "ListBox.Items", а не ListBox...) Кажися, я ваще запутался, кажися..(недавно пересел с VC++ на C#). Может у кого были похожие мысли?





Я понимаю, что чего-то не понимаю, но чего я не понимаю я еще не понимаю...



05.01.04 18:17: Перенесено модератором из '.NET' — TK
Re: Как заставить ListBox хранить структуру данных?
От: warlockonline Россия  
Дата: 01.12.03 15:16
Оценка: 5 (2)
Здравствуйте, Brovi, Вы писали:

B>Привет, программирующая общественность.

B>[skipped]
public class MyClass
{
  private string myName;

  public override string ToString()
  {
    //формируешь текстовое описание класса
    return myName;
  }
}


и потом:
MyClass mc=//...
//...
lstObjects.Items.Add(mc);
//...
MyClass cl=lstObjects.SelectedItem as MyClass
Re: Как заставить ListBox хранить структуру данных?
От: Юнусов Булат Россия  
Дата: 01.12.03 15:39
Оценка: 6 (1)
Здравствуйте, Brovi, Вы писали:

У листбокса есть пропертя DisplayMember, ей можно скормить строку = имя строковой проперти твоей структуры которая показывает ее начинку.
Re[2]: Как заставить ListBox хранить структуру данных?
От: Brovi  
Дата: 01.12.03 15:46
Оценка:
Здравствуйте, warlockonline, Вы писали:

[поскипано]

может я извращенец, но нельзя ли сделать что-то типа:

ListBox lbList;
...
lbList.Items.Add(int i, bool j, ...);//переопределенный метод

т.е. чтобы внутри моего Add происходила упаковка в строку и вызов Add базового класса?
Не сочтите за идиота, просто хотел сделать контрол на базе ListBox с OwnerDraw.. или не морочить себе голову и лучше добавлять по паре лишних строчек в код и использовать стандартный ListBox?
Re[3]: Как заставить ListBox хранить структуру данных?
От: WarlockOnLine Россия  
Дата: 01.12.03 15:53
Оценка: 2 (1)
Здравствуйте, Brovi, Вы писали:

B>
B>ListBox lbList;
B>...
B>lbList.Items.Add(int i, bool j, ...);//переопределенный метод
B>

B>т.е. чтобы внутри моего Add происходила упаковка в строку и вызов Add базового класса?
B>Не сочтите за идиота, просто хотел сделать контрол на базе ListBox с OwnerDraw.. или не морочить себе голову и лучше добавлять по паре лишних строчек в код и использовать стандартный ListBox?

Перегрузить member ListItemCollection нельзя — он sealed. Да и если бы можно было — это гораздо сложнее: фактически свой контрол ListBox'а надо создавать
Re: Как заставить ListBox хранить структуру данных?
От: Yuri_T  
Дата: 05.01.04 13:16
Оценка:
Здравствуйте, Brovi, Вы писали:

B>Привет, программирующая общественность.

B>Пытаюсь сделать класс на основе ListBox-а, в котором хранится не строка, а какая-нибудь структура данных. Как подсунуть ListBox-у свою структуру на хранение?(поскольку не хотелось-бы добавлять динамические массивы в класс т.к. остальное все устраивает) Была мысль упаковать мою структуру в строку, для чего нужно заменить метод "ListBox.Items.Add" на свой, но че-то не пойму, как до него добраться(т.к. он является методом "ListBox.Items", а не ListBox...) Кажися, я ваще запутался, кажися..(недавно пересел с VC++ на C#). Может у кого были похожие мысли?

B>


B>


B>Я понимаю, что чего-то не понимаю, но чего я не понимаю я еще не понимаю...
B>


Храни ссылку на свою структуру
SetItemDataPtr(id, ptr)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.