답변:
세트 Label
의 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
};
Dockstyle 및 내용 정렬은 필요에 따라 다를 수 있습니다. 예를 들어 wpf 양식의 간단한 레이블에는 DockStyle.None을 사용합니다.
속성 앵커 : 없음을 설정하여이를 달성합니다.
사용 가능한 전체 영역에 레이블을 고정하지 않으려면 TextChanged 대신 SizeChanged 이벤트를 설정하십시오. 각 문자를 변경하면 자동 크기 속성이 True로 설정된 경우 레이블의 너비 속성과 텍스트가 변경됩니다. 따라서 모든 수식을 사용하여 레이블을 중앙에 유지할 수 있습니다.
private void lblReport_SizeChanged(object sender, EventArgs e)
{
lblReport.Left = (this.ClientSize.Width - lblReport.Size.Width) / 2;
}
비슷한 것을하고 싶었지만 배경 이미지가있는 양식에서 레이블의 텍스트가 변경되었을 때이 방법으로 다시 페인트가 분명하다는 것을 알았습니다. 따라서 다음을 수행했습니다. 미들 센터
그런 다음 텍스트가 변경 될 때마다 (타이머를 사용하여 광산이 완료되었습니다) 다음 방법을 호출했습니다.
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 속성을이 반환 값으로 설정하십시오. 이렇게하면 텍스트가 변경되고 전체 화면 양식의 다시 그리기가 명확하지 않은 경우 레이블이 항상 양식의 중앙에있게됩니다.