2008-12-07 1 views
3

Работая в формах выигрыша C#, я пытаюсь создать список элементов, где каждый элемент скомпрометирован значком и тремя метками в определенном макете.Пользовательский контроль в выбираемом списке - лучший способ сделать это?

Вот иллюстрация этого

http://hosting04.imagecross.com/image-hosting-13/3535help.jpg

Пользователь должен иметь возможность выбрать одну строку, так же, как в обычном Listview.

Моя первая попытка - создать значок и метки в пользовательском элементе управления, а затем поместить элемент управления пользователя в FlowLayoutPanel в вертикальном макете (который создаст список). Проблема была в выборе. Поскольку событие щелчка было захвачено пользовательским элементом управления, не было простого способа разрешить другим элементам управления в списке знать, что выбран элемент управления, и если они выбраны в настоящее время, они теперь должны быть отменены. (Я надеюсь, что это имеет смысл ...)

Я также пробовал использовать некоторый открытый список избранного с открытым исходным кодом. Я нашел здесь: http://www.codeproject.com/KB/list/aa_listview.aspx , но это слишком глючит.

Я также думал о создании настраиваемого элемента управления, который будет наследовать от Listview и отображать мой элемент управления в списке, но я также читал о ком-то, кто пытался это сделать и столкнулся с множеством трудностей.

Я был бы очень рад услышать любые ваши предложения.

Спасибо!

ответ

2

Что вы можете попробовать, это два пользовательских элемента управления. Один элемент управления, который у вас уже есть, иконка и метки. Это будет внутренний контроль, который вы не сможете создать вне своей сборки. Второй пользовательский элемент управления будет просто сортировать контейнер (вы можете сделать это либо с помощью пользовательского элемента управления, либо наследования с панели или любого другого). Это будет просто набором отдельных элементов, и он будет управлять выбором и отображением элементов.

В принципе, каждый пользовательский элемент управления поднимет событие щелчка, к которому подключается пользовательский элемент управления вашего контейнера. Затем он узнает, что выбрать и отменить выбор.

Надеюсь, что имеет смысл!

Смежные вопросы