Каков наилучший способ встроить элементы управления в список / сетку - PullRequest
0 голосов
/ 18 июня 2010

У меня есть таблица из приблизительно 450 строк, которую я хотел бы отобразить в графическом списке, чтобы пользователи могли просматривать или изменять позиции. Пользователи будут выбирать варианты из выпадающих списков, устанавливать флажки и т. Д.

Я нашел класс просмотра списка, который расширяет базовый просмотр списка, позволяя встраивать объекты, но он выглядит немного вялым, когда я загружаю в него все строки.

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

Я ищу предложения, как я могу сделать это с минимальными издержками.

спасибо

c #, vs2008, .net 2.0, system.windows.forms

1 Ответ

1 голос
/ 18 июня 2010

Если у вас есть сложный набор элементов управления для каждой строки, это самый простой способ сделать это.Тем не менее, он не будет действовать как список;Вы не сможете выделить строки или перемещаться с помощью клавиатуры.

  • Создание пользовательского элемента управления с общедоступным свойством, указывающего на вашу строку
  • Нарисуйте панель на своей форме - вы добавите экземпляры своего пользовательского элемента управления 'row' во время выполнения на эту панель.
  • Установите автоматическую прокрутку панели (также установите свойство для прокрутки активного элемента управления в представлении)
  • Установите свойство привязки панели, чтобы оно соответствовало размерам с окном
  • Вы можете установитьсвойства максимального / минимального размера формы, поэтому всегда отображается полная строка usercontrol (это необходимо для предотвращения горизонтальной прокрутки на панели)
  • Есть подпрограмма для добавления строк
  • В цикле,создавать новые пользовательские элементы управления, устанавливать их свойства, включая строку в таблице данных
  • Кроме того, присваивать свойству .Top значение .controls панели (pnl.controls.count-1) для всех, кроме первого, который вы добавляете

Очень просто, допускает сложные «строки», выполняет свою работу.Есть более эффективные способы сделать это, если вы хотите использовать функциональность, похожую на списки, не кодируя ее самостоятельно, но вам это может не понадобиться.

...