2013-04-19 1 views
3

첫 번째 패널의 너비를 필요한 너비로 설정하려면 다음 코드를 사용합니다 (실제 너비를 얻으려면 expectedWith를 2로 나눌 필요가 있습니다. expectedWith - 이유를 모르겠다.)SplitContainer의 FixedPanel이 크기를 무시합니다.

splitContainer1.SplitterDistance = expectedWith/2; 

내가 필요로하는 다음 일은, 첫 번째 패널이 고정되어 당신이 창 크기를 조정하는 경우에만 두 번째 패널은 더 큰 크기의 첫 번째 숙박 얻는 것을 의미한다. 지금

splitContainer1.FixedPanel = FixedPanel.Panel1; 

문제 :이를 위해 나는 다음 줄을 사용는 FixedPanel-속성이 completly 첫 번째 패널의 크기를 무시 것으로 보인다. FixedPanel-line을 사용하면 SplitterDistance 속성을 어느 값으로 설정하든 상관 없습니다. 그것은 항상 동일합니다. 양식 디자이너에서 SplitterDistance를 설정하더라도 문제가되지 않습니다.

해결 방법이 있습니까?

+0

불가능합니다. 나는 SplitterDistance를 대신 사용해야한다는 NotSupportedException을 얻고 있습니다. –

+0

방금 ​​시도한이 문제가 보이지 않습니다. 어떤 순서로 설정했는지에 상관없이 다른 속성을 설정하거나 해제하면 모든 것이 잘 작동하는 것 같습니다. 당신의 문제는 정확히 무엇입니까? –

+1

와우, 네 말이 맞아. 이 문제는 Panel1의 내용이 .Dock = DockStyle.Fill을 사용하는 경우에만 발생합니다. 미친 것들 ... 나는 그것을 해결하는 방법을 고대하고있다. –

답변

4

나는 내 자신의 질문에 대답 할 수있다. 이는 해당 패널의 내용이 DockStyle.Fill을 Dock 속성에 사용하는 경우에만 발생합니다. 해결책은 FixedPanel을 설정 한 직후에 DockStyle.Fill 값을 설정하는 것입니다. 이것은 또한 질문에 설명 된 "두 가지로 나누기"- 행동에 대한 책임이 있습니다.

John Willemse에게 감사드립니다.

+0

사용중인 프레임 워크의 버전은 무엇입니까? 왜냐하면 나는 문제를 재현 할 수 없기 때문에 2.0과 3.5를 모두 시도했기 때문입니다. (관련성이있는 경우 Panel1 내부에 하나의 레이블로만 시도해 봤지만) –

0

고정 된 첫 번째 패널과 동적 인 두 번째 패널 만 필요하기 때문에 SplitContainer 대신 TableLayoutPanel을 사용할 수 없습니까?

+0

아니요. 사용자가 다음을 수행 할 수 있어야합니다. 패널을 손으로 크기를 조정하십시오. 그러나 폼이 최대화 될 때 자동으로 크기가 조정되는 것을 피하기를 원합니다. –

0

DockStyle.None은 올바른 방향으로 나아가는 단계입니다. 그러나 Panel-Window가 예상 치수를 가질 때까지 3-6 회 반복 (Splitter 떨림)이 필요합니다. 이상한!

0

필자는 원래의 포스터의 조언을 사용하고 원하는 SplitterDistance를 두 개로 나누고 싶다는 유혹을 받았다. 그 이유는 내가 요구 한 너비의 두 배인 것처럼 보였기 때문이다.

SplitterDistance를 설정하기 전에 두 패널의 하위 패널에있는 DockStyle을 None으로 변경하려고했지만 내 경우에는 문제에 영향을주지 않았습니다.

SplitterDistance가 설정되면 변경하여 문제를 해결했습니다. 원래 Form.Show()를 호출하기 전에 패널에서 SplitterDistance를 설정했습니다. 양식이 표시된 후에 SplitterDistance를 설정하면 그것을 치료하는 것처럼 보였습니다.

0

나는 이것을 알아 냈습니다. 페이지를 열어서 레지스트리에서 스플리터 위치를로드 할 필요가 있었지만 설정 한 시계가 컨트롤의 디자인 타임 설정으로 돌아가는 것을 보여 주었던 방식에 매우 좌절했습니다.

"FixedPanel"속성을 "없음"에서 panel1 또는 panel2로 변경하면됩니다. 너에게 달렸어. 최소 설정이 충분히 작지 않을 때 및/또는 크기가 큰 다른 컨테이너 내에 분리 컨테이너가있는 경우에만 실제로 작동합니다. 고정 된 패널은 고정 된 상태로 유지됩니다. 마우스를 사용하여 선택하면 두 패널 모두 크기를 조정할 수 있으므로 fixed라는 단어는 다소 모호합니다.

디자인 타임 컨트롤을 사용하십시오. 양식에 내려 놓으십시오. 요구 사항에 맞게 크기를 조정하고 필요에 따라 고정하십시오. 패널 중 하나를 수정하는 것을 제외하고는 다른 것. IsSplitterFixed라는 속성이 있습니다.이 컨트롤이 불안정 해지고 false로 유지해야하는 이유 중 하나입니다. panel.minsize 속성은 요구 사항을 기반으로 디자인 타임에 설정해야하며 항상 인식해야합니다. 그들의 가치관.

행복하게 살고 있습니다!

관련 문제