Eğer araç penceresi ya da en aza indirilebilen bir form ise, onun yüksekliğini programlı olarak alabilmek istiyorum.Winforms Form başlık çubuğunun yüksekliğini nasıl edinirim?
Bu mümkün mü? Öyleyse nasıl?
Eğer araç penceresi ya da en aza indirilebilen bir form ise, onun yüksekliğini programlı olarak alabilmek istiyorum.Winforms Form başlık çubuğunun yüksekliğini nasıl edinirim?
Bu mümkün mü? Öyleyse nasıl?
Sen kullanarak aracı-pencere ve normal formlar için başlık çubuğu yüksekliğini belirleyebilir:
Rectangle screenRectangle=RectangleToScreen(this.ClientRectangle);
int titleHeight = screenRectangle.Top - this.Top;
nerede bu 'sizin şeklidir.
ClientRectangle, formunuzun istemci alanının sınırlarını döndürür. RectangleToScreen bunu, Form ekran konumuyla aynı koordinat sistemi olan ekran koordinatlarına dönüştürür.
Formunuzun bir MDI uygulamasında bir görünüm olması durumunda ek bir kırışıklık daha var. Bu durumda RectangleToScreen (this.ClientRectangle) formun kendisiyle (beklendiği gibi) değil, Form'u barındıran MDIClient denetimini barındıran MainForm'a göre koordinatları döndürür. Sen may
Bu, TitleBarsize alacak
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;
tarafından bunun hesabını:
form.ClientRectangle.Height - form.Height;
Tam olarak değil. Bu size * istemci olmayan alanın * yüksekliğini verir. Pratikte, bu, istemci olmayan başka alanlar yoksa başlık çubuğunun yüksekliği ile aynı olabilir, ancak zorunlu olarak aynı değildir. Semantik olarak, o zaman, kod yanlıştır. –
bu iyi bir çözüm olduğuna inanıyoruz. SystemInformation.CaptionHeight yalnızca bir üst düzey pencere için Title Bar yüksekliğini (inanıyorum) verecektir ve ToolWindows için çalışmayacaktır, bu yüzden bu biraz daha geneldir. – Nick
+1 benden de, bunun daha iyi bir çözüm olduğuna inanıyorum. 'SystemInformation.CaptionHeight', ToolWindows ile çalışmıyor gibi görünüyor. –
Bunun doğru olduğundan emin değilim. Aero, appcompat nedenleriyle pencere pozisyonu hakkında yalan söylüyor. Onun yağ sınırları zor bir sorundur. –