2012-05-31 2 views
5

Windows Forms 프로젝트로, 디자이너 (즉, 컴파일하기 전에 마우스 사용)에서만 작동합니다. 나는 그것에 Form과 2 Panel을 가지고있다. panel1이 form1에 도킹되어 있습니다 (option - fill). panel2도 form1에 도킹되어 있습니다 (채우기). 또한 panel2는 panel1 앞에 있습니다 (후자는 앞 뒤에 숨김). 내 문제는 - 패널 2를 도킹 해제하고 다시 도킹하면 패널 1에 도킹됩니다 (패널 1은 부모가됩니다). 패널 2의 부모를 어떻게 바꿀 수 있습니까?C# Panel 도킹 문제

내가 지금까지 알아 낸 유일한 해결책은 form1을 선택하고 (Ctrl + V) panel2를 붙여 넣기 (ctrl + x) panel2를 잘라내는 것이지만,이 방법은 panel2 컨트롤과 코드 간의 모든 연결을 제거합니다 예를 들어, panel2의 버튼을 클릭하는 것은 이벤트를 처리하는 함수가 아직 존재하더라도 더 이상 작동하지 않습니다.

더 좋은 아이디어가 있습니까?

+2

당신은에 Panel1을 해제 할 수 있습니다, 다음 Form1에 배경에에 Panel1에서 패널이 이동 :

문서 개요 창은 다음과 같이 보인다. 나는 이것으로 또한 고투했다. 그게 항상 내 일이었고, 나는 너무 많은 haedaches를 일으키는 그것을 절단하고 붙여 넣는 것을 발견했습니다. 또한 디자이너 파일을 사용하여 코드로 수정 될 수 있습니다. –

+0

@ K'Leg 그게 저에게 유효하고 정확한 대답과 같습니다. – gbianchi

+0

@gbianchi 감사합니다. 지금 대답으로 알려 드리겠습니다. 처음에는 –

답변

6

디자이너는 잘라 내기 및 붙여 넣기를 피하기 위해 이벤트 핸들러를 분리하여 컨트롤을 클립 보드로 자릅니다.

디자이너를 사용 중이므로 Visual Studio의 View - Other Windows 메뉴에서 Document Outline 양식을 엽니 다. 화살표 단추를 사용하여 컨트롤의 부모 또는 도킹 순서를 올바르게 설정하십시오.

enter image description here

0

변경하면 패널은 부모를 변경할 수 없습니다. 또는 귀하의 문제에 대해 정말로 확신하지 못합니다.

하지만 ... 부모를 변경하고 싶다면. 패널 컨트롤 목록 패널을 제거하고 폼 컨트롤 목록에 추가하십시오.

yourPanel.Controls.Remove(yourOtherPanel); 
yourForm.Controls.Add(yourOtherPanel); 
yourOtherPanel.Dock = .....; 
+0

사용자가 디자이너 만 사용하고 있습니다. 코드가 uselees 인 것처럼 보입니다. – gbianchi

+0

예를 들어 Form1_Load에서 상위 항목을 변경하는 추가 코드를 추가하면 해결 방법 (최종 제품에 남아 있기 때문에 추악한 코드)이 될 수 있습니다. 이것에 관해서는 : "당신이 도크로 바뀌면 패널은 부모를 바꿀 수 없다 !!!" - 분명히 할 수 있습니다. 패널 아래에 놓인 컨트롤에 따라 달라질 것 같아요. – NPS

+0

패널은 부모를 논리로 바꾸고, 도킹을 해제하면 양식이 아닌 panel1에 놓여 있으므로 바뀝니다. – gbianchi

1

내가 그런 다음 Form1의 배경에에 Panel1에서 패널이 이동에 Panel1을 해제 할 수있는 대답은 여기

을 퍼팅하고, 그래서 사람들이 내 주석 대답을 좋아 보인다. 나는 이것으로 또한 고투했다. 그게 항상 내 일이었고, 나는 너무 많은 haedaches를 일으키는 그것을 절단하고 붙여 넣는 것을 발견했습니다. 디자이너 파일을 사용하여 코드로 고정시킬 수도 있습니다.