Відповіді:
Set Label
«s AutoSize
властивість False
, TextAlign
властивість MiddleCenter
і Dock
властивість Fill
.
Control.Dock
властивості ( msdn.microsoft.com/en-us/library/… ) ви можете приєднати (приклеїти) елемент керування до певної сторони контейнера. Так , наприклад Left
, Top
, Right
або Bottom
. Fill
повідомляє елементу управління зайняти все наявне місце в контейнері.
Dock
налаштування.
Dock
налаштування було непотрібне. Зміна AutoSize
властивості дає мітці обмежувальне поле, яким ви можете вручну відрегулювати розмір.
Дещо незначного додаткового вмісту для налаштування програмно:
Label textLabel = new Label() {
AutoSize = false,
TextAlign = ContentAlignment.MiddleCenter,
Dock = DockStyle.None,
Left = 10,
Width = myDialog.Width - 10
};
Вирівнювання стилю та вмісту може відрізнятися від ваших потреб. Наприклад, для простої мітки у формі wpf я використовую DockStyle.None.
Ви досягнете цього параметра, встановивши властивість Якір: Ні.
Якщо ви не хочете стикувати ярлик у всій доступній області, просто встановіть події SizeChanged замість TextChanged. Зміна кожної літери змінить властивість ширини мітки, а також її тексту, коли властивість автоматичного розміру встановлено на True. Тож, до речі, ви можете використовувати будь-яку формулу, щоб зберегти мітку в центрі форми.
private void lblReport_SizeChanged(object sender, EventArgs e)
{
lblReport.Left = (this.ClientSize.Width - lblReport.Size.Width) / 2;
}
Прийнята відповідь не спрацювала для мене з двох причин:
BackColor
встановив таке налаштування AutoSize = false
і Dock = Fill
змушує колір фону заповнити всю формуAutoSize
встановити значення false, тому що мій текст мітки був динамічнимНатомість я просто використав ширину форми та ширину мітки для обчислення лівого зміщення:
MyLabel.Left = (this.Width - MyLabel.Width) / 2;
Я хотів зробити щось подібне, але на формі з фоновим зображенням я виявив, що коли текст на мітці змінив перефарбування, було очевидним за допомогою цього методу, тому я зробив наступне: * Встановіть мітку AutoSize на true та TextAlign на MiddleCenter
Потім, кожного разу, коли текст змінювався (мій робився за допомогою таймера), я викликав такий метод:
private Point GetPosition()
{
int y = (this.Height / 2) - (label1.Height / 2);
int x = (this.Width / 2) - (label1.Width / 2);
return new Point(x, y);
}
І встановіть властивість Location мітки на це повернене значення. Це гарантувало, що етикетка завжди знаходилася в центрі форми, коли текст змінювався, а перефарбовування для форми на весь екран не було очевидним.
Ви можете спробувати наступний фрагмент коду:
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;
}
Це дійсно центр