IT story

.NET (Winforms)의 양식 내에서 컨트롤을 중앙에 배치합니까?

hot-time 2020. 7. 3. 18:10
반응형

.NET (Winforms)의 양식 내에서 컨트롤을 중앙에 배치합니까? [복제]


양식 내에서 고정 크기 컨트롤을 중앙에 배치하려고합니다.

관심이 없다면, 이것을하는 비 바보 같은 방법이 있습니까? 내가 정말로 원하는 것은 text-align css 속성과 비슷한 것입니다.

현재 주변 양식의 패딩 속성을 적절한 크기로 설정하고 컨트롤의 Dock 속성을 채우도록 설정하고 있습니다.


앵커를 사용하여이를 달성 할 수 있습니다 . 또는 더 정확하게는 사용하지 않습니다 .

컨트롤은 기본적으로 폼의 왼쪽 상단에 고정되어 폼 크기가 변경 될 때 폼의 왼쪽 상단에서 거리가 일정하게 유지됩니다. 컨트롤 앵커를 왼쪽 아래로 변경하면 폼의 크기를 조정할 때 컨트롤이 폼의 아래쪽과 왼쪽에서 같은 거리를 유지합니다.

앵커를 한 방향으로 끄면 크기를 조정할 때 컨트롤이 해당 방향으로 중앙에 유지됩니다.

참고 : VS2015에서 속성 창을 통해 앵커를 끄려면 없음, 없음을 입력해야 할 수 있습니다 (기본 상단, 왼쪽 대신)


myControl.Left = (this.ClientSize.Width - myControl.Width) / 2 ;
myControl.Top = (this.ClientSize.Height - myControl.Height) / 2;

양식 크기를 조정할 수 있는지 여부를 나타내지 않기 때문에 크기 조정에 신경 쓰지 않으면 쉬운 방법이 있습니다 (관리하는 경우 Mitch Wheats 솔루션 사용).

컨트롤-> 형식 (메뉴 옵션)-> 가운데 창-> 가로 또는 세로를 선택하십시오.


이 작업을 수행하는 좋은 방법을 찾았으며 여러 컨트롤에서 작동합니다. 3 개의 열이있는 TableLayout을 추가하십시오. 가운데 기둥을 절대 크기로 만드십시오 (그러나 필요한 공간은 얼마입니까). 두 개의 외부 열을 100 %로 설정하십시오. 가운데 열에 패널을 추가하고 필요한 컨트롤을 추가하고 원하는 위치에 배치하십시오. 해당 센터 패널은 이제 양식의 중앙에 유지됩니다.


다른 컨테이너에서 패널 o의 버튼을 가운데에 놓으려면 다음 단계를 수행하십시오.

  1. 디자인 타임에 위치를 설정하십시오
  2. 버튼의 앵커 속성으로 이동 하여이 값을 다음 이미지로 설정하십시오.

여기에 이미지 설명을 입력하십시오


중앙에 놓으려는 컨트롤을 패널 내부에 놓고 왼쪽 및 오른쪽 패딩 값을 기본값보다 큰 값으로 설정할 수 있습니다. 이들이 동일하고 컨트롤이 패널 측면에 고정되어 있으면 해당 패널의 중앙에 나타납니다. 그런 다음 필요에 따라 컨테이너 패널을 상위에 고정 할 수 있습니다.


모든 컨트롤을 패널에 넣은 다음 패널을 양식의 중앙으로 이동시키는 코드를 작성할 수 있습니다.

panelMain.Location = 
    new Point(ClientSize.Width / 2 - panelMain.Size.Width / 2, 
              ClientSize.Height / 2 - panelMain.Size.Height / 2);

panelMain.Anchor = AnchorStyles.None;

그것은 눈알을 포함합니다 (잘 계산하고 계산할 수 있다고 생각합니다).하지만 컨트롤을 폼에 삽입 한 다음 앵커를 제거하십시오 (앵커 = 없음).


또한 다른 컨트롤의 중심에 정렬하려면 다음을 수행하십시오.

//The "ctrlParent" is the one on which you want to align "ctrlToCenter".
//"ctrlParent" can be your "form name" or any other control such as "grid name" and etc.
ctrlToCenter.Parent = ctrlParent;

ctrlToCenter.Left = (ctrlToCenter.Parent.Width - ctrlToCenter.Width) / 2;
ctrlToCenter.Top = (ctrlToCenter.Parent.Height - ctrlToCenter.Height) / 2;

참고 URL : https://stackoverflow.com/questions/491399/centering-controls-within-a-form-in-net-winforms

반응형