2014-04-29 2 views
1

해상도가 1366x768 인 dotnet Window 응용 프로그램을 디자인하고 있습니다. 화면 해상도가 지정된 화면 해상도보다 낮을 때 양식 컨트롤의 크기를 조정할 수 없습니다. 해결책이 있습니까 낮은 해상도의 양식 컨트롤도 크기를 조정할 수 있습니다. 지금까지 다음 코드를 시도했습니다. 해상도가 지정된 해상도보다 높으면 잘 작동합니다.화면 해상도에 따라 폼 컨트롤의 크기를 조정하려면

private void masterform_Resize(object sender, EventArgs e) 
     { 

      double RW = (this.Width - CW)/CW; 
      double RH = (this.Height - CH)/CH; 
      foreach (Control Ctrl in Controls) 
      { 
       Ctrl.Width += Convert.ToInt32(Ctrl.Width * RW); 
       Ctrl.Height += Convert.ToInt32(Ctrl.Height * RH); 
       Ctrl.Left += Convert.ToInt32(Ctrl.Left * RW); 
       Ctrl.Top += Convert.ToInt32(Ctrl.Top * RH); 
      } 
      CW = this.Width; 
      CH = this.Height; 
     } 


    private void masterform_Load(object sender, EventArgs e) 
     { 
      IW = this.Width; 
      IH = this.Height;`enter code here` 

     } 

해결 방법이 있으면 알려주세요.

+0

사소한 방법을 시도 다른 fo가있는 속성 NT 크기. 글꼴은 "주변"속성이며, 일반적으로 컨트롤은 부모 글꼴을 사용합니다. 모든 것이 자동으로 크기가 조정됩니다. 이와 같이 실제로 UI를 만드는 것은 거의 적합하지 않습니다. 주 창 크기를 조정할 때 컴퓨터에서 실행되는 다른 프로그램이 어떻게 작동하는지 확인하십시오. –

답변

2

Table Layout Panel + Anchor을 사용하면 모든 해상도에서 컨트롤 크기를 처리 할 수 ​​있습니다.

이 명령을 따를 수있는이 일을 위해 :

한 형태, 테이블 레이아웃 패널을 넣어 원하는대로 행과 COLS를 설정 만들기, 다음 넣어 Percent로 COLS 폭을 설정하는 것을 잊지 마십시오 당신의 셀의 컨트롤 (또는 먼저 패널을 셀에 넣은 다음 컨트롤을 패널에 놓음) 앵커를 왼쪽 + 오른쪽으로 설정하면됩니다.

사진 아래 참조 :

Pic1

Pic2

+0

만약 당신이 어떤 샘플 응용 프로그램을 제공 pl 있습니다. – user3541403

+0

@ user3541403 내 대답을 편집 – RezaRahmati

+0

시도했다. 그것도 작동하지 않습니다. 컨트롤의 크기를 여전히 조정할 수 없습니다. – user3541403

0

이 단순히 폼의 글꼴을 다시 지정하는 것입니다이

private Size oldSize; 
private void Form1_Load(System.Object sender, System.EventArgs e) 
{ 
    oldSize = base.Size; 
} 
protected override void OnResize(System.EventArgs e) 
{ 
    base.OnResize(e); 
    foreach (Control cnt in this.Controls) { 
     ResizeAll(cnt, base.Size); 
    } 
    oldSize = base.Size; 
} 
private void ResizeAll(Control cnt, Size newSize) 
{ 
    int iWidth = newSize.Width - oldSize.Width; 
    cnt.Left += (cnt.Left * iWidth)/oldSize.Width; 
    cnt.Width += (cnt.Width * iWidth)/oldSize.Width; 

    int iHeight = newSize.Height - oldSize.Height; 
    cnt.Top += (cnt.Top * iHeight)/oldSize.Height; 
    cnt.Height += (cnt.Height * iHeight)/oldSize.Height; 
} 

description here

관련 문제