에서 WinForms
a Label
를 사용하여 성공, 실패 등과 같은 다른 메시지를 표시합니다.
해당 라벨을 중앙 형식으로 가운데에 배치하고 싶습니다. 레이블에 단어가 하나만 있거나 전체 문장이 있는지 여부를 중심으로 유지할 솔루션을 원합니다.
답변
세트 Label
의 AutoSize
재산 False
, TextAlign
재산 MiddleCenter
및 Dock
재산에 Fill
.
답변
프로그래밍 방식으로 설정하기위한 몇 가지 사소한 추가 콘텐츠 :
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;
}
답변
허용 된 답변이 두 가지 이유로 나에게 효과가 없었습니다.
- 나는
BackColor
그렇게 설정AutoSize = false
했고Dock = Fill
전체 양식을 채우기 위해 배경색을 발생 AutoSize
레이블 텍스트가 동적이므로 어쨌든 false로 설정할 수 없습니다
대신, 단순히 폼의 너비와 레이블의 너비를 사용하여 왼쪽 오프셋을 계산했습니다.
MyLabel.Left = (this.Width - MyLabel.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 속성을이 반환 값으로 설정하십시오. 이렇게하면 텍스트가 변경되고 전체 화면 양식의 다시 그리기가 명확하지 않은 경우 레이블이 항상 양식의 중앙에있게됩니다.
답변
다음 코드 스 니펫을 시도해 볼 수 있습니다.
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;
}
정말 중심이야