Как ограничить область управления клиентом в пользовательском элементе управления WinForms

У меня есть пользовательский элемент управления, который использует конструктор, унаследованный от ParentControlDesigner, чтобы разрешить удаление дочерних элементов управления. Я не использую никаких внутренних дизайнеров, просто прямые вещи с одним родителем.

Этот элемент управления отображает "заголовок", поэтому я пытаюсь сделать три вещи:

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

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

  3. Не допускайте перетаскивания элементов управления в область заголовка, точка (у меня такое ощущение, что это может быть невозможно).

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

Может ли кто-нибудь указать мне правильное направление реализации этих правил, не прибегая к неуклюжей подпанели и методам InternalControlDesigner?

1 ответ

Решение

Предотвратить перетаскивание элементов управления в область заголовка, точка (у меня такое ощущение, что это может быть невозможно)

Переопределение элемента управления (самого элемента управления, а не дизайнера) Control.DisplayRectangle.get может помочь ограничить своих детей.

Другие вопросы по тегам