Растущий пользовательский контроль не обновляется - PullRequest
0 голосов
/ 29 апреля 2010

Я занимаюсь разработкой на C # и .Net 2.0. У меня есть пользовательский элемент управления, который рисует ячейки (столбчатые) в зависимости от максимального количества ячеек. Есть некоторые процедуры рисования, которые генерируют необходимые ячейки. Существует свойство NumberOfCells, которое регулирует высоту этого элемента управления; CELLHEIGHT_CONSTANT * Количество ячеек. Метод OnPaint () переопределен (код, который рисует Количество ячеек).

Существует еще один пользовательский элемент управления, который содержит панель, содержащую элемент userControl1 сверху. Существует свойство NumberCells, которое изменяет NumberOfCells userControl1.

UserControl2 затем помещается в форму окна. В этой форме есть элемент управления NumericUpDown (только с шагом 1). Когда пользователь увеличивает на 1, я также настраиваю VerticalScroll.Maximum на 1.

Все работает хорошо и хорошо, НО, когда я увеличиваю один раз, панель обновляется нормально (при необходимости вставляет вертикальную прокрутку), но ячейки не добавляются! Я пытался использовать Invalidating для userControl2 AND в форме, но кажется, что ничто не рисует новые добавленные ячейки.

Любая помощь приветствуется. Заранее спасибо.

  • Lawrence

Ответы [ 2 ]

0 голосов
/ 29 апреля 2010

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

0 голосов
/ 29 апреля 2010

Попробуйте отладку и убедитесь, что свойство NumberOfCells установлено правильно. Если это так и ячейки по-прежнему не отображаются после того, как окно стало недействительным (скажем, путем минимизации, а затем восстановления окна), у вас возникла проблема с методом рисования ячейки.

Если после минимизации / восстановления появляются ячейки, вам нужно вызвать Invalidate(CellRegion) в установщике NumberOfCells

...