Каков наиболее «легкий» контроль над winforms? - PullRequest
2 голосов
/ 27 апреля 2009

(Это, вероятно, глупый вопрос И WTF вместе взятые, но здесь ничего не говорится)

Я хочу «нарисовать» линии или области в моем интерфейсе - обычно это разделители внутри TableLayoutPanel. В настоящее время я просто снимаю панель в строке и устанавливаю для нее Dock = Fill и присваиваю фону требуемый цвет.

Непосредственно перед тем, как сделать то же самое, я подумал, может ли другой элемент управления (Label?) Быть более легким. Или, может быть, я должен просто свернуть свой, унаследовав от Control?

Есть ли другие решения?

Ответы [ 4 ]

7 голосов
/ 27 апреля 2009

Я бы унаследовал от Control и создал бы свой собственный, так как все другие элементы управления, включая Label и Panel, прямо или косвенно наследовали от Control. Это также позволяет инкапсулировать функциональность отдельно от других.

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

1 голос
/ 17 ноября 2009

Вот готовое решение от Microsoft.

Извлечение Visual Basic PowerPack 3.0 . Не беспокойтесь об имени - это компоненты из Visual Basic Team, но они прекрасно работают и для разработчиков на C #.

Один из включенных компонентов - LineShape, который делает именно то, что вы ожидаете от названия.

Если вы ориентируетесь на более ранние версии фреймворка, вы можете включить сборку в ваше приложение. Но, если вы нацелены на 3.5 SP1 или выше, блок питания включен.

1 голос
/ 27 апреля 2009

Я бы взглянул на класс ControlPaint , который имеет несколько методов для рисования линий и т. Д., Которые специально предназначены для рисования линий, похожих на систему. Переопределите событие рисования или унаследуйте его, как говорит Даниил, и нарисуйте линии там.

0 голосов
/ 27 апреля 2009

Почему вы хотите написать свой собственный? Это кажется преждевременной оптимизацией для меня. Также вам нужно определить, что вы подразумеваете под легким весом, использованием памяти, циклами процессора и т. Д. Если вы действительно беспокоитесь о производительности, я бы унаследовал управление, но я бы не пошел по этому пути, если тестирование не покажет, что ваше текущее решение не по какой-то причине не работает.

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