먼저 이 효과를 살펴보겠습니다
아이디어 제공:
TabControl 컨트롤을 다시 작성하고 OnPaint 메서드를 오버로드하세요
공개 클래스 CustomTabControl : TabControl
{
//......
보호된 재정의 void OnPaint(PaintEventArgs e)
{
this.PaintTransparentBackground(e.Graphics, base.ClientRectangle);
this.PaintAllTheTabs(e);
this.PaintTheTabPageBorder(e);
this.PaintTheSelectedTab(e);
}
//......
}
MDI 창을 만들고 ToolStrip 컨트롤을 추가하세요.
양식 기본 클래스 만들기
공개 클래스 BaseForm: 양식{
보호된 ToolStrip toolStrip;
public static ListtoolStripItemList = new Lis();
protected void AddToolStrip(ToolStripItem toolStripItem){
toolStripItemList.add(toolStripItem);
if(toolStrip != null){
toolStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[]{ toolStripItem });
}
}
protected void SubToolStrip(문자열 형식 이름){
if(toolStrip != null){
foreach(toolStripItemList의 ToolStripItem i){
if (i.이름 == formName){
toolStrip1.Items.remove(i);
}
}
}
}
}
상위 양식 기본 클래스 만들기
공개 클래스 MdiForm: BaseForm{
//Mdi 형식으로 ToolStrip 제어 toolStrip1을 생성하고 기본 클래스의 toolStrip에 할당합니다
보호된 재정의 void OnLoad(EventArgs e) {
base.OnLoad(e);
toolStrip = this.toolStrip1;
}
}
하위 양식 기본 클래스 만들기
공개 클래스 ChildForm: BaseForm{
보호된 재정의 void OnLoad(EventArgs e) {
base.OnLoad(e);
ToolStripItem toolStripItem = 새 ToolStripItem();
toolStripItem.Name = this.Name;
toolStripItem.Text = "xxxxxx";
AddToolStrip(toolStripItem);
}
보호된 재정의 void OnFormClosed(FormClosedEventArgs e) {
base.OnFormClosed(e);
SubToolStrip(this.Name);
}
}
단순한 아이디어입니다. 모든 양식은 동시에 기본 클래스를 상속합니다. 이 기본 클래스에 ToolStrip(Mdi 창에 버튼을 추가하기 위한 컨트롤)과 List(간단하게 하기 위해 여기에서는 간단한 목록이 사용됨)라는 두 개의 개체를 만듭니다. ToolStrip의 단추가 서로 다른 사실적인 효과, 그림 등을 갖도록 양식의 필드 변경과 같은 다른 효과를 추가하려면 ToolStripButtonCollection을 만들어야 합니다. 새 하위 양식이 로드될 때마다 다음으로 이동합니다. ToolStripButtonCollection이 항목을 추가하면 ToolStripButtonCollection이 자동으로 ToolStrip에 버튼을 추가합니다. 마찬가지로 ToolStripButtonCollection이 항목을 감소시키면 ToolStrip은 자동으로 버튼 하나를 감소시킵니다. 변경 및 저장이 필요한지 여부 등
그런 다음 Mdi 양식을 생성하고 기본 클래스에서 toolStrip을 초기화합니다.
이후 하위폼을 생성합니다. ChildForm에서 상속받은 하위폼이라면 Mdi 창에 해당 하위폼의 이름을 딴 버튼이 자동으로 생성됩니다. 위의 코드와 매우 유사합니다. 단지 데모 아이디어일 뿐입니다. 중요한 것은 ToolStripButtonCollection 클래스를 만드는 것입니다.
위 내용은 Winform에서 둥근 탭 그리기를 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!