Visual Studio 2008 Form Designer에서 한 패널을 PS의 레이어처럼 숨기려면 어떻게해야합니까? 그렇지 않으면 사용자가 클릭해야하는 여러 개의 "화면"을 디자인하는 또 다른 더 나은 방법을 추천 할 수 있습니까?여러 패널이있는 Windows.Form 디자인 -> PS 레이어와 같은 한 패널을 숨기는 방법
답변
최근 프로젝트에서 this Wizard 코드를 사용했는데 제대로 작동했습니다.
기본 경험을 제공합니다. 내가 내 UI 내에서 동일한 공간에 여러 개의 패널을 갖고 싶어 경우이 때
뭘 설명하는 마법사, 당신은 그러나 Eric J.
의 접근 방식을 조사 할 수 있습니다, 나는 전환하려면 디자이너 사이에서 TabControl을 사용하고 TabControl에서 탭을 숨길 때가 있습니다. 이렇게하면 디자인 타임에 UI를 더 쉽게 관리 할 수 있으며 코드는 런타임에 탭 사이를 전환하는 것이 매우 간단합니다.
매우 간단한 HiddenTabsControl이라는 TabControl에서 파생 된 사용자 지정 컨트롤을 만들었습니다. 이 클래스는 WndProc만을 재정의하고 TabControl 기본 클래스는 다른 모든 것을 처리 할 수 있습니다. 당신이 할 필요가있다 :
- 는
- 사용자 지정 컨트롤을 선택하여 프로젝트에 새 항목을 추가, HiddenTabsControl 같은
- 이름이 뭔가.
- 기본 클래스를 TabControl로 변경하고 Visual Studio에서 추가 한 생성자 및 OnPaint 재정의를 제거하십시오.
복사 클래스로의 WndProc이 재정의 :
protected override void WndProc(ref Message m)
{
// Hide tabs by trapping the TCM_ADJUSTRECT message
if (m.Msg == 0x1328 && !DesignMode)
{
m.Result = (IntPtr)1;
}
else
{
base.WndProc(ref m);
}
}
지금 당신은 디자이너에서 탭을 변경할 수 있습니다 쉽게 UI를 디자인하고 코드에서 당신은 필요에 따라 탭을 변경하는 이벤트를 처리 할 수 있습니다. 컨트롤이 구축 될 때 탭이 점유하는 공간의 탭을 제거
this.hiddenTabsControl.SelectedTab = this.tabPageYouWantVisible;
한 부작용 : 선택된 탭을 변경하는 것은 쉽게 이루어집니다. 이를 제거하면 HiddenTabsControl이 차지하는 공간이 축소되어 공간이 변경됩니다. 일반적으로 HiddenTabsControl의 앵커를 줄이면 축소되지 않게됩니다.
덜 우아하지만 빠른 해킹 방식은 런타임까지 상위 폼에 패널을 추가하지 않는 것입니다. 이를 수행 할 때 디자이너는 컴파일 전에 패널이 어디에 속해 있는지 알지 못하기 때문에 표시되지 않습니다.
예를 들어, 당신이 부모 폼에 컨트롤을 추가 코드 블록 찾을 :
//this->Controls->Add(this->panel_X);
this->Controls->Add(this->tabControl);
this->Controls->Add(this->menuStrip_topMenu);
설명하거나 문을 제거를, 다음 양식이로드 될 때 발생하는 이벤트에 대한 핸들을 찾을 :
를 this->Load += gcnew System::EventHandler(this, &MainForm::MainForm_Load);
그런 다음 이벤트 핸들러의 정의, 폼에 컨트롤을 추가 :
System::Void MainForm_Load(System::Object^ sender, System::EventArgs^ e) {
...
...
this->Controls->Add(this->panel_X);
}
나는이 일을함으로써 원치 않는 부작용을 경험하지는 못했지만, 누군가 그럴만 한 이유가 없다면 듣고 싶어 할 것입니다.
- 1. 여러 번 같은 패널이있는 탭 패널
- 2. 자바 스크립트 패널을 숨기는 방법을
- 3. ps 명령 결과에서 프로세스를 숨기는 프로그램 작성하기
- 4. CSS를 사용하여 패널이있는 양식
- 5. windows.form C# 양식 간 이동
- 6. 업데이트 패널이있는 jquery
- 7. YUI 패널 - 9 개의 패널이있는 3 x 3 페이지를 작성해야합니다 - 패널을 수직으로 배치하는 방법
- 8. 두 번째로 클릭 한 요소를 숨기는 방법
- 9. 역순으로 PS 파일을 읽는 방법?
- 10. 여러 개의 .ps 파일 오버레이 또는 병합
- 11. 여러 개의 패널이있는 JFrame 내부의 JPanel에 이미지 추가
- 12. 플립 패널을 만드는 방법?
- 13. 행에있는 항목의 높이가 같은 패널을 자르십시오.
- 14. CSS를 사용하여 한 번에 여러 요소를 표시하거나 숨기는 방법은 무엇입니까?
- 15. 레이어와 계층의 차이점은 무엇입니까?
- 16. 슬라이드 패널을 만드는 방법
- 17. Compact Framework에서 다른 양식의 입력 패널을 숨기는 방법은 무엇입니까?
- 18. WPF - 숨기는 패널을 구현하는 가장 좋은 방법은 무엇입니까?
- 19. 패널이있는 GWT ActivityManager
- 20. ps -l <proc_id> 출력에서 WCHAN 'finish'가 무엇을 의미합니까?
- 21. 키보드를 사임하거나 숨기는 방법?
- 22. jQuery로 div를 숨기는 방법?
- 23. 안드로이드에서 progressbar를 숨기는 방법?
- 24. 라이온의 XCode와 같은 시동 패널을 표시합니다.
- 25. visio와 같은 디자인 다이어그램
- 26. mouseout에서 div를 숨기는 방법?
- 27. URL에서 ID를 숨기는 방법
- 28. WebGrid에서 열을 숨기는 방법?
- 29. 패널을 입력 한 후 iPhone을 새로 고침
- 30. C# 나중에 사용하기 위해 패널을 디자인하는 방법 .. (설정 화면)
+1. 멋진 간단한 솔루션입니다. 그래도 키보드로 탭을 전환 할 수는 있지만 (Ctrl + Tab은 올바르게 작동하고 포커스를 오른쪽으로 가져 가면 화살표 키). – Joey
또한 MultiLine 속성을 항상 'true'로 설정하려고합니다. 그렇지 않으면 탭 막대를 스크롤하는 화살표가 나타납니다 (클릭 할 수는 없지만). – Joey
이 방법은 Mono와 호환되지 않습니다. – Luca