Więc jeśli jest to okno narzędziowe lub formularz do minimalizacji, chcę móc programowo uzyskać jego wysokość.Jak uzyskać wysokość tytułu paska tytułu WinForm?
Czy to możliwe? Jeśli tak to jak?
Więc jeśli jest to okno narzędziowe lub formularz do minimalizacji, chcę móc programowo uzyskać jego wysokość.Jak uzyskać wysokość tytułu paska tytułu WinForm?
Czy to możliwe? Jeśli tak to jak?
Można określić wysokość Titlebar zarówno narzędzia okna oraz normalnych form za pomocą:
Rectangle screenRectangle=RectangleToScreen(this.ClientRectangle);
int titleHeight = screenRectangle.Top - this.Top;
Gdzie ta "jest Twój formularz.
ClientRectangle zwraca granice obszaru roboczego formularza. RectangleToScreen zamienia to na współrzędne ekranu, które jest tym samym układem współrzędnych, co położenie ekranu Form.
Istnieje dodatkowa zmarszczka na wypadek, gdyby formularz był widokiem w aplikacji MDI. W takim przypadku RectangleToScreen (this.ClientRectangle) zwraca współrzędne w stosunku do samego formularza (jak można się spodziewać), ale w odniesieniu do MainForm, który hostuje kontrolę MDIClient obsługującą formularz.
Użytkownik może w celu uwzględnienia, że
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;
To będzie wam TitleBarsize:
form.ClientRectangle.Height - form.Height;
Niezupełnie. Daje to wysokość * obszaru bez obsługi klienta *. W praktyce może to być taka sama jak wysokość paska tytułu, jeśli nie ma innych obszarów poza klientem, ale niekoniecznie jest taka sama. Semantycznie, kod jest błędny. –
Wierzę, że to jest lepsze rozwiązanie. SystemInformation.CaptionHeight poda tylko wysokość paska tytułu dla okna najwyższego poziomu (jak sądzę) i nie będzie działać dla ToolWindows, więc jest to trochę bardziej ogólne. – Nick
+1 ode mnie, ja też uważam, że to lepsze rozwiązanie. "SystemInformation.CaptionHeight" wydaje się nie działać z ToolWindows. –
Nie jestem pewien, czy to prawda. Aero polega na pozycji okna z powodów appcompat. Jego grube granice są trudnym problemem. –