Как получить размер высоты заголовка формы Winforms Form?
Итак, если это инструментальная панель или минимизируемая форма, я хочу иметь возможность получить ее высоту программно.
Возможно ли это? Если да, то как?
Ответ 1
Вы можете определить высоту заголовка как для окон инструментов, так и для обычных форм, используя:
Rectangle screenRectangle=RectangleToScreen(this.ClientRectangle);
int titleHeight = screenRectangle.Top - this.Top;
Где 'this' - ваша форма.
ClientRectangle возвращает границы клиентской области вашей формы. RectangleToScreen преобразует это в координаты экрана, которые являются той же системой координат, что и расположение экрана формы.
Ответ 2
Существует дополнительная морщина, если ваша форма является видом в приложении 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;