C#의 TabControl을 사용하다가 TabPage에 닫기 버튼을 넣고 싶었다.
TabPage라는 단어로 검색을 했더니 TabControl 에서 처리해야 된다는 걸 알게 되었다.
TabControl 의 TabPage 에 닫기 버튼을 추가하는 방법에 대한 내용을 정리했다.
우선 TabControl을 상속을 받는다.
그리고 생성자에서 DrawMode를 OwnerDrawFixed로 해줘야 한다.
public class ucTabControl : TabControl
|
닫기 버튼에 대한 이미지는 2개를 만들어서 Resource에 만들어 놓았다.
하나는 선택된 TabPage의 닫기 버튼을 위한 이미지이며,
다른 하나의 나머지 다른 TabPage의 닫기 버튼을 위한 이미지이다.
protected override void OnDrawItem(DrawItemEventArgs e)
try Font f = this.Font; Rectangle r = e.Bounds;
r = this.GetTabRect(e.Index);
// SelectedTab의 Background Color 는 White으로 처리
// 각 Tab별로 close button 에 대한 image값
// TabPage Text
img.Dispose();
|
OnDrawItem 메소드 하나만 override 하면 TabPage 별로 닫기 버튼 넣기가 처리가 된다.
아래의 그림에서 보면 SelectTab의 닫기버튼은 다른 TabPage 와 배경색이 구분된다.
그런데 문제는 TabControl을 사용해보면 처음 두개의 TabPage 처럼 TabPage Text 와 닫기 버튼이 중첩되어 버린다.
this.ucTabControl1.TabPages.Add("New Page3 "); |
위와 같은 TabPage 추가시 Text에 공백2개 정도을 추가하면 닫기 버튼 중첩을 회피 할 수는 있다.
* 위의 내용은 구글 검색중에서 알게 된 내용을 정리하였으며, 출처는 모르겠음.
'C#' 카테고리의 다른 글
C# 에서 Class를 Dictionary Key 로 사용할려면 ... (0) | 2020.09.04 |
---|---|
ToolStripButton 에 Popup 메뉴 보이기 (0) | 2017.11.08 |
ADO를 이용하여 Excel 화일 생성 (0) | 2016.06.24 |
C#으로 개발한 Oracle Database Viewer 프로그램 - DBViewer (0) | 2015.07.25 |