Как получить размер высоты заголовка формы Winforms? - PullRequest
33 голосов
/ 07 января 2010

Итак, если это окно инструментов или минимизируемая форма, я хочу иметь возможность программно получать его высоту.

Возможно ли это?Если так, то как?

Ответы [ 3 ]

54 голосов
/ 07 января 2010

Вы можете определить высоту заголовка как для окон инструментов, так и для обычных форм, используя:

Rectangle screenRectangle=RectangleToScreen(this.ClientRectangle);

int titleHeight = screenRectangle.Top - this.Top;

Где «это» - ваша форма.

ClientRectangle возвращает границы клиентской области вашей формы. RectangleToScreen преобразует это в координаты экрана, которые являются той же системой координат, что и местоположение на экране формы.

4 голосов
/ 27 апреля 2012

Существует дополнительная складка, если ваша форма является представлением в приложении MDI. В этом случае RectangleToScreen (this.ClientRectangle) возвращает координаты не относительно самой формы (как можно было бы ожидать), а относительно MainForm, в которой размещается элемент управления MDIClient, содержащий форму.

Вы можете отчитаться за это

Point pnt = new Point(0, 0);
Point corner = this.PointToScreen(pnt); // upper left in MainFrame coordinates
Point origin = this.Parent.PointToScreen(pnt); // MDIClient upperleft in MainFrame coordinates
int titleBarHeight = corner.Y - origin.Y - this.Location.Y;
0 голосов
/ 07 декабря 2016

Это даст вам TitleBarsize:

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