Создание "виртуального" ScrollableControl? - PullRequest
4 голосов
/ 20 августа 2009

Я создаю свой очень простой элемент управления Grid. Я решил извлечь из ScrollableControl (именно это, похоже, и делает DataGridView) и перейти оттуда.

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

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

Я в основном очень расстроен этим. Какой самый простой способ заставить это работать?

Ответы [ 4 ]

10 голосов
/ 20 августа 2009

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

1 голос
/ 20 августа 2009

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

К вашему сведению, вы можете захотеть взглянуть на SourceGrid , либо как вдохновитель дизайна (он хорошо использует шаблон MVC), либо, возможно, это решит вашу проблему, и вы не захотите бросать свои .

РЕДАКТИРОВАТЬ: Doh! Я уверен, что решение Майкла правильное / лучшее. Однако вы все еще можете взглянуть на SourceGrid.

0 голосов
/ 20 августа 2009

Чтобы не быть легкомысленным, уровень настройки, который вы ищете, гораздо более уместен и ориентирован на будущее в WPF. Можно построить свой элемент управления и разместить его в WinForms, если не может быть разветвления вашего приложения.

0 голосов
/ 20 августа 2009

Вы можете просто сбросить его на панель с полосами прокрутки:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...