Yanıtlar:
Set Label
'in AutoSize
özellik için False
, TextAlign
mülk için MiddleCenter
ve Dock
mülkiyet için Fill
.
Control.Dock
mülkiyet ( msdn.microsoft.com/en-us/library/... ), siz (sopa) kabın belli bir tarafına bir denetim yerleştirebilirsiniz. Örneğin Left
, Top
, Right
ya da Bottom
. Fill
kontrole kaptaki tüm kullanılabilir alanı almasını söyler.
Dock
ayar için bir şey yapmak zorunda değildi .
Dock
ayar gereksizdi. AutoSize
Özelliğin değiştirilmesi, etikete boyutunu manuel olarak ayarlayabileceğiniz bir sınırlama kutusu verir.
Programlı olarak ayarlamak için bazı ek içerikler:
Label textLabel = new Label() {
AutoSize = false,
TextAlign = ContentAlignment.MiddleCenter,
Dock = DockStyle.None,
Left = 10,
Width = myDialog.Width - 10
};
Dockstyle ve İçerik hizalama gereksinimlerinizden farklı olabilir. Örneğin, bir wpf formunda basit bir etiket için DockStyle.None kullanın.
Anchor: None özelliğini ayarlayarak elde edersiniz.
Etiketi kullanılabilir alanın tamamına yerleştirmek istemiyorsanız, TextChanged yerine SizeChanged olayını ayarlamanız yeterlidir. Her bir harfi değiştirmek, otomatik boyut özelliği True olarak ayarlandığında etiketin width özelliğini ve metnini değiştirir. Bu nedenle, etiketi formda ortalamak için herhangi bir formülü kullanabilirsiniz.
private void lblReport_SizeChanged(object sender, EventArgs e)
{
lblReport.Left = (this.ClientSize.Width - lblReport.Size.Width) / 2;
}
Kabul edilen cevap benim için iki nedenden dolayı işe yaramadı:
BackColor
ayarı böylece ayarlanır AutoSize = false
ve Dock = Fill
tüm formunu doldurmak için arka plan rengini neden olurAutoSize
benim etiket metni dinamik olduğu için yanlış oldu Neyse ayarlıBunun yerine, sol ofseti hesaplamak için formun genişliğini ve etiket genişliğini kullandım:
MyLabel.Left = (this.Width - MyLabel.Width) / 2;
Ben benzer bir şey yapmak istedim, ama arka plan görüntüsü olan bir formda, etiketindeki metin değiştiğinde yeniden boyamaları bu yöntemle açık olduğunu buldum, bu yüzden aşağıdakileri yaptım: * AutoSize etiketini true ve TextAlign olarak ayarlayın MiddleCenter
Sonra, metin her değiştiğinde (benim bir zamanlayıcı kullanılarak yapıldı) aşağıdaki yöntemi çağırdım:
private Point GetPosition()
{
int y = (this.Height / 2) - (label1.Height / 2);
int x = (this.Width / 2) - (label1.Width / 2);
return new Point(x, y);
}
Etiketin Konum özelliğini bu dönüş değerine ayarlayın. Bu, metin değiştiğinde etiketin her zaman formun merkezinde olmasını sağladı ve tam ekran formun boyaması belli değildi.
Aşağıdaki kod snippet'ini deneyebilirsiniz:
private Point CenterOfMenuPanel<T>(T control, int height=0) where T:Control {
Point center = new Point(
MenuPanel.Size.Width / 2 - control.Width * 2,
height != 0 ? height : MenuPanel.Size.Height / 2 - control.Height / 2);
return center;
}
Gerçekten Merkez