2009-12-01 3 views
2

응용 프로그램에서 여러 이미지 파일을 표시하는 데 tabcontrol을 사용했습니다. 단 하나의 탭 페이지 만 표시 될 때 탭 페이지 제목을 제거하여 해당 화면 공간을 이미지에 사용할 수 있습니다. (이것은 Firefox에서 "탭 막대 항상 표시"선택을 취소하는 것과 비슷합니다.)Tabcontrol : 어떻게 탭 페이지 제목을 제거 할 수 있습니까?

tabcontrol을 사용하여이 작업을 수행 할 수 있습니까? 또는 하나의 파일 (탭) 만 열려있을 때 패널 컨트롤을 사용하는 것이 더 좋습니다.

답변

6

예, 가능합니다. 프로젝트에 새 클래스를 추가하고 아래 표시된 코드를 붙여 넣습니다. 엮다. 새 컨트롤을 도구 상자의 위쪽에서 폼으로 끌어다 놓습니다.

using System; 
using System.Windows.Forms; 

public class MyTabControl : TabControl { 
    private int mPages = 0; 
    private void checkOnePage() { 
    if (IsHandleCreated) { 
     int pages = mPages; 
     mPages = this.TabCount; 
     if ((pages == 1 && mPages > 1) || (pages > 1 && mPages == 1)) 
     this.RecreateHandle(); 
    } 
    } 
    protected override void OnControlAdded(ControlEventArgs e) { 
    base.OnControlAdded(e); 
    checkOnePage(); 
    } 
    protected override void OnControlRemoved(ControlEventArgs e) { 
    base.OnControlRemoved(e); 
    checkOnePage(); 
    } 
    protected override void WndProc(ref Message m) { 
    // Hide tabs by trapping the TCM_ADJUSTRECT message 
    if (m.Msg == 0x1328 && !DesignMode && this.TabCount == 1) m.Result = (IntPtr)1; 
    else base.WndProc(ref m); 
    } 
} 
+0

탭의 지역을 설정 ... :) 여기에 주어진 대답을 사용해보십시오! (심지어 안으로.) – xpda

+0

좋은 거기의 사람! +1 –

+0

checkOnePage를 호출하지 않아도 제대로 작동하는 것 같습니다. 내가 지켜야 할 이유가 있니? – xpda

0

탭 라벨을 숨길 수있는 방법이 없습니다. 내 추천 :

패널에 탭 내용을 포함하십시오. 하나의 탭만있는 경우 Tab 컨트롤이나 그와 유사한 것을 대체하기 위해 패널 풋을 이동하십시오.