2011-10-13 1 views
0

패널에 분할 컨테이너가 있습니다. 그룹 상자를 추가했습니다. 그 그룹 상자에는 동적 텍스트 상자가있는 flowcontrol이 있습니다. groupbox 및 flowcontrol을 사용하여 도크 스타일을 채 웁니다. 코드 도크 도크 스타일을 채우기 위해 으로 설정했지만 부모 flowcontrol의 크기가 조정되는 동안 스플리터을 움직일 때 크기가 조정되지 않습니다.설정 DockStyle. 동적 컨트롤에 대한 채우기는 스플리터를 이동할 때 크기가 조정되지 않습니다.

 Label labelInput = new Label(); 

     TextBox listBoxNewInput = new TextBox(); 


     listBoxNewInput.Name = ce.ToString(); 

     labelInput.AutoSize = true; 
     labelInput.Font = new Font(labelInput.Font, FontStyle.Bold); 



     listBoxNewInput.Multiline = true; 
     // Add vertical scroll bars to the TextBox control. 
     listBoxNewInput.ScrollBars = ScrollBars.Vertical; 
     // Allow the RETURN key in the TextBox control. 
     listBoxNewInput.AcceptsReturn = true; 
     // Allow the TAB key to be entered in the TextBox control. 
     listBoxNewInput.AcceptsTab = true; 
     // Set WordWrap to true to allow text to wrap to the next line. 
     listBoxNewInput.WordWrap = true; 
     listBoxNewInput.Text = ts.ToString(); 
     //listBoxNewInput.Width = 150; 
     listBoxNewInput.MinimumSize = new Size(200,150); 
     listBoxNewInput.MaximumSize = new Size(1000, 150); 

     listBoxNewInput.Dock = DockStyle.Fill; 

     listBoxNewInput.TextChanged += new EventHandler(listBoxNewInput_TextChanged); 
     //Add the newly created text box to the list of input text boxes 
     inputTextBoxesList.Add(listBoxNewInput); 

     //Add the labels and text box to the form 

     flowLayoutPanel1.Controls.Add(labelInput); 
     flowLayoutPanel1.Controls.Add(listBoxNewInput); 

내가 직접 내가 스플리터를 이동할 때 크기를 조정 할 일 개 첫 번째 두 개의 컨트롤이 표시 spliter 패널에 컨트롤을 넣어하려고하면

splitContainer1.Panel1.Controls.Add(labelInput); splitContainer1.Panel1.Controls.Add(listBoxNewInput); 

-> 경우 컨트롤 내가 그들을 둘 때 내가 스플리터를 이동할 때 흐름 제어 크기 조정에서, 그것은 좋은 것입니다 또는 -> 내가 스플리터 패널 1

+0

내부의 컨트롤이 DockFilled 인 경우 FlowLayoutPanel의 요점은 무엇입니까? DockFill을 원한다면 MaximumSize의 요점은 무엇입니까? – LarsTech

+0

확실하지는 않지만 flowlayoutpanel은 Dock과 관련하여 다른 것처럼 동작하지 않습니다. 채우기. http://msdn.microsoft.com/en-us/library/ms171633.aspx에서 살펴보십시오. tablelayoutpanel을 고려해 볼 수도 있습니다. 그것은 또한 당신의 문제를 해결할 수 있지만 실제로 귀하의 요구 사항에 남아 있도록 보장합니다. – Sandy

+0

컨트롤을 spliter 패널 1에 직접 넣으려고하면 두 개의 컨트롤 만 나타납니다 : – PUG

답변

1

에 직접 넣어 때 모든 컨트롤을 기반으로 표시하여 의견 및 당신이 달성하려고하는 생각, 나는 당신이 다른 하나 아래에 하나의 TextBox를 쌓아 놓고있는 것처럼 들리므로 SoundLayoutPanel을 TableLayoutPanel로 교체해야한다고 생각합니다.

1 열 1 행으로 TableLayoutPanel을 만듭니다. 여기

은 작업 예입니다

대신 도킹의
tableLayoutPanel1.AutoScroll = true; 
tableLayoutPanel1.GrowStyle = TableLayoutPanelGrowStyle.AddRows; 
tableLayoutPanel1.RowStyles.Clear(); 
tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.Absolute, 150)); 
for (int i = 0; i < 4; i++) { 
    AddTextBox("TextBox #" + i.ToString()); 
} 

private void AddTextBox(string info) { 
    TextBox tx = new TextBox(); 
    tx.Multiline = true; 
    tx.Text = info; 
    tx.ScrollBars = ScrollBars.Vertical; 
    tx.WordWrap = true; 
    tx.Height = 150; 
    tx.Anchor = AnchorStyles.Left | AnchorStyles.Top | AnchorStyles.Right; 
    tableLayoutPanel1.Controls.Add(tx); 
} 

, 나는 텍스트 상자의 높이를 설정하고 SplitPanel 크기가 변경되면, 텍스트 상자가 적절하게 크기를 조정할 수 있도록 다음 나는 앵커를 설정합니다.

+0

이 행을 가져 와서 코드가 작동합니다. tableLayoutPanel1.RowStyles.Add (새 RowStyle (SizeType.Absolute, 150)); 이 줄은 불필요한 공간 b/t 첫 번째 2 컨트롤을 발생시킵니다. – PUG

+0

@jaminator 그래, TableLayoutPanel 및 FlowLayoutPanel 컨트롤은 가장 재미 있지 않습니다. – LarsTech

+0

마지막 행 앞에 unieded 공간을 생성하지 않도록 tablelayout을 피하기 위해 끝에 더미 행을 추가하십시오. – PUG

관련 문제