spark108
@spark108

Как изменить позиционирование контрола при dock?

П.с. есть вероятность того, что я не правильно сформировал вопрос в заголовке.

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

Проблема в том, что, если на форму добавить контрол с свойством Dock равным DockStyle.Fill нарисованные на форме границы и заголовок перекрывается.

Есть ли возможность вмешатся в поведение Dock, а если быть точнее, то сделать смещение рабочей зоны, на которую он будет растягиватся?

Сразу говорю вариант "с созданием контрола Panel и маштабирование его кодом до нужных размеров, а уже в него добовлять все контролы" мне мне не шибко-то нравится, но рабочий.

Далее в ходе поиска в интернете натолкнулся на мысль "сместить точку отсчета координат на форме". Все бы хорошо, я это сделал это при помощи TranslateTransform, но вот только это смещает точку отсчета при рисовании, но не самой формы. Следственно создание контрола с указанием нулевой точки не смещается куда положено, а свойство Dock все так же перекрывает все что можно.
  • Вопрос задан
  • 48 просмотров
Пригласить эксперта
Ответы на вопрос 2
exorka
@exorka
Программист, админ, радиолюбитель
Если использование DockStyle.Fill не принципиально то можно обойтись без оного, просто использовать якоря (Anchors).
Ответ написан
@cicatrix
было бы большой ошибкой думать
При borderless окне у него клиентская часть совпадает с физическими размерами. Когда есть граница и заголовок, клиентская часть меньше. Нативными средствами .NET переопределить клиентскую часть окна, вроде бы, нельзя, но средствами Win32API можно. Попробуйте переопределить клиентскую часть окна при помощи AdjustWindowRectEx.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы