2013-09-08 2 views
0

SpliterContainer 및 컨트롤 패널을 사용하여 2 열로 간단한 응용 프로그램을 만들려고합니다. 그리고 모든 화면에서보기 좋게 보일 것입니다. 그래서 필자는 요소의 상대적 위치를 사용하기로 결정했습니다.Windows Form에서 요소의 상대 위치

설명서 및 다양한 포럼을 읽었지만 이상한 점이 있습니다. 스플리터의 두 번째 열이 전혀 나타나지 않습니다.

Result

, 당신은 나에게 그 문제의 원인을 찾을 수 있습니다하세요?

private void Form1_Load(object sender, EventArgs e) 
     { 
      WindowState = FormWindowState.Maximized; 

      int screenWidth = Screen.PrimaryScreen.Bounds.Width; 
      int screenHeight = Screen.PrimaryScreen.Bounds.Height; 

      //set form size 
      this.Size = new Size(screenWidth, screenHeight); 

      //set button panel size 
      const double percentOfHeightPanel = 0.05; 
      int heightOfPanelButton = Convert.ToInt32(screenHeight * percentOfHeightPanel); 
      this.panel_button.Size = new System.Drawing.Size(screenWidth, heightOfPanelButton); 
      this.panel_button.Location = new Point(0, 0); 


      //set splitContainer size 
      int widthOfContainer = Convert.ToInt32(0.5 * screenWidth); 
      int heightOfContainers = Convert.ToInt32(screenHeight * (0.95)); 
      splitContainer1.Panel1.MinimumSize = new Size(widthOfContainer, heightOfContainers); 
      splitContainer1.Panel2.MinimumSize = new Size(widthOfContainer, heightOfContainers); 
      splitContainer1.Location = new Point(0, heightOfPanelButton); 
      //this.splitContainer1.Panel2MinSize = screenWidth - widthOfContainer; 

      //set textBox size     
      this.textBox1.Multiline = true; 
      this.textBox1.Location = new Point(0, heightOfPanelButton); 
      this.textBox1.MinimumSize = new System.Drawing.Size(widthOfContainer, heightOfContainers); 

      this.textBox2.Multiline = true; 
      this.textBox2.Location = new Point(widthOfContainer, heightOfPanelButton); 
      this.textBox1.MinimumSize = new System.Drawing.Size(widthOfContainer, heightOfContainers); 
     } 
+0

문제와 관련된 문제를 식별하는 코드 읽기 ** 시각적 **은 쉽지 않습니다. ** 화면 ** 물건에 무엇이 잘못되었는지 보여주는 몇 가지 스크린 샷을 게시해야합니다. –

+0

@KingKing – Ray

+1

왜 splitContainer의 두 번째 열이 나타나지 않는지 생각해보십시오. 'BorderStyle'을'BorderStyle.FixedSingle'로 설정하여 명확하게보아야합니다. –

답변

1

두 개의 같은 크기의 두 개의 분할 패널은 다음

splitContainer1.SplitterDistance = 
          (splitContainer1.Width - splitContainer1.SplitterWidth)/2; 

을 설정

splitContainer1.IsSplitterFixed = true; 

당신은 디자인 타임에 수동으로이 두 가지 속성을 설정할 수 있습니다 설정해야합니다. 그러면 사용자는 패널의 크기를 조정할 수 없으며 패널은 자동으로 크기가 같아 지도록 크기가 조절됩니다.

대신 TableLayoutPanel을 사용해보십시오.

으로 설정된 도킹 된 속성으로 두 개의면을 동일하게 보이게하고 컨트롤을 UserControl에 놓고 두 개의 인스턴스를 두 개의 패널에 배치하십시오.

+0

고맙습니다. 최소 너비> = 1이기 때문에 splitContainer1.SplitterWidth 또는 일부 트릭을 제거 할 수 있습니까? – Ray

+1

@Ray : 두 열만으로'TableLayoutPanel'을 사용하고 너비를 각각 50 %로 설정할 수 있습니다. 이것은 같은 효과가 있습니다. –

관련 문제