2011-09-10 5 views
3

버튼을 클릭 할 때마다 패널을 오버랩하려고합니다. 특정 패널이 표시됩니다.Visual C#/WinForms 패널

그러나이 작업은 패널이 겹치지 않기 때문에 매우 까다로운 작업입니다.

예 : 나는 패널 1과 패널 2를 가지고있다 :

나는 패널 2를 패널 1과 동일하게 만든다. 같은 위치에 놓을 때마다 ... 때로는 패널 2가 패널 1의 멤버가된다. 실제 패널 2에 대한 패널 1의 가시성 또한 나타납니다.

내가 원하는 것은 두 패널이 서로 겹치는 것입니다.

는 ", BTW 나는 나의 가장 좋은 방법이 될 수있는 패널을 숨김 해제, 내가 그 숨어있는 생각 이유 수직 탭을 만들고있어.

이 가능 패널이 서로 중첩 할 수 있나요?

답변

4

디자이너가 겹쳐서 싸우고 있습니다. 아래쪽 패널이 겹쳐진 패널을 위로 당기는 것을 막으려면 약간의 트릭을 사용해야합니다. 겹쳐진 패널을 왼쪽 상단으로 약간 벗어서두면 정말 겹쳐집니다. 그런 다음 양식 생성자에 코드를 추가하여 올바른 위치에 배치하십시오.

public Form1() { 
     InitializeComponent(); 
     panel2.Location = panel1.Location; 
     panel2.Size = panel1.Size; // optional 
    } 

또 다른 방법은보기 + 다른 Windows + 문서 레이아웃을 사용하는 것입니다. 내부 패널을 외부 컨테이너 (폼)로 드래그 앤 드롭 할 수 있습니다. 그러나 Location 속성을 직접 편집해야합니다.

+0

+1 :이 방법은 다른 *'UserControl' 옵션을 사용하는 대신에 인스턴스를 사용하지 않으려 고 할 때 * 숨겨진 패널을 숨겨 놓은 것입니다. 패널을 오버랩하는 디자이너 친화적 인 방법이 있다면 ... 숨겨진 탭과 같은 종류의 것이 좋을 것입니다. – IAbstract

+0

@IAbstract - 다음을 확인하십시오. http://stackoverflow.com/questions/2340566/creating-wizards-for-windows-forms-in-c/2342320#2342320 –

0

그것을

GUI 편집기는 패널을 컨테이너로 취급한다는 점에서 (사실입니다) 패널에 다른 패널을 포함하여 패널을 배치하면됩니다. 이 컨테이너에 "중첩 된"

이 문제를 방지하려면 먼저 한 패널을 배치하고 위치/크기를 적절히 조정하십시오. 그런 다음 마우스 오른쪽 버튼으로 클릭하고 "컨트롤 잠금"을 선택하십시오. 이렇게하면 현재의 모든 폼 컨트롤이 잠기고 패널을 포함하여 새로운 컨트롤을 직접 배치 할 수 있습니다. 아무 것도 중첩되거나 기존 컨테이너 안에 배치 될지도 모릅니다.

물론 컨트롤이 겹칠 수 있습니다. 순서 또는 컨트롤 만들기 만 고려하면 양식에서 z 순서가 정의됩니다. 나중에 추가되고 나중에 그려 지므로 컨트롤의 상단에 배치됩니다. 더 일찍 추가했다.

편집 : 불행히도 나는 내 대답으로는 완전히 옳지 않았습니다. 패널을 잠그면 컨트롤이 완전히 그 안에 자리 잡을 수 있습니다. 그러나 부분적으로 중첩되는 경우 두 컨테이너가 동일한 깊이의 깊이로 만들어 지므로 문제가 질문에서 묻는 것처럼 중첩 패널의 경우에는 존재하지 않습니다.

+2

잠금 컨트롤이 이런 식으로 작동하면 좋을 것입니다. 사실, 잠긴 패널은 여전히 ​​겹쳐진 패널을 위로 빨아들입니다. 시도 해봐. –

+0

감사합니다 !!! 그래서 잠금 제어가 어떻게되는지 ...))) Btw, 정답을 올바른 것으로 표시하는 방법은 무엇입니까? –

+0

@Hand Passant : 음 ... 내 답변을 게시하기 전에 확인했지만, 지금은 때때로 작동하지 않는 것을 볼 수 있습니다. 어쨌든, 패널이 기존 컨테이너 내에 완전히 위치 할 때만 흡입되며, 중복은 여전히 ​​가능합니다. 하지만 내 대답을 수정합니다 –

0

패널에는 위치라는 속성이 있으며 필요에 맞게 수정할 수 있습니다. 올바른 부모가 주어 지도록 Panel을 배치하는 한, 나중에 Location 속성을 변경하여 위치를 변경할 수 있습니다. 생성자 나 그 밖의 것들에 디자인 코드를 넣을 필요가 없습니다.

올바른 부모에 패널을 배치하려면 부모를 선택하고 툴바에서 Panel 컨트롤을 수동으로 드래그하지 말고 더블 클릭하십시오.이 디자이너와 싸울 필요가 없습니다.