首頁 >系統教程 >Windows系列 >如何在winform中實現圓角選項卡繪製

如何在winform中實現圓角選項卡繪製

王林
王林轉載
2024-01-25 14:30:06549瀏覽

winform中怎麼繪製圓角選項卡

先看下這個效果

如何在winform中實現圓角選項卡繪製

#給你個想法:

重寫TabControl控件,重載OnPaint方法

public class CustomTabControl : TabControl

{

//......

protected override void OnPaint(PaintEventArgs e)

{

this.PaintTransparentBackground(e.Graphics, base.ClientRectangle);

this.PaintAllTheTabs(e);

this.PaintTheTabPageBorder(e);

this.PaintTheSelectedTab(e);

}

//......

}

C Winform

建立一個MDI窗口,並新增一個ToolStrip控制項。

建立一個窗體的基底類別

public class BaseForm: Form{

protected 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(string formName){

if(toolStrip != null){

foreach (ToolStripItem i in toolStripItemList){

if (i.Name == formName){

toolStrip1.Items.remove(i);

}

}

}

}

}

建立一個父窗體基底類別

public class MdiForm: BaseForm{

//在Mdi窗體中建立一個ToolStrip控制項 toolStrip1,並賦值給基底類別中的toolStrip

protected override void OnLoad(EventArgs e) {

base.OnLoad(e);

toolStrip = this.toolStrip1;

}

}

建立一個子窗體基底類別

public class ChildForm: BaseForm{

protected override void OnLoad(EventArgs e) {

base.OnLoad(e);

ToolStripItem toolStripItem = new ToolStripItem();

toolStripItem.Name = this.Name;

toolStripItem.Text = "xxxxxx";

AddToolStrip(toolStripItem);

}

protected override void OnFormClosed(FormClosedEventArgs e) {

base.OnFormClosed(e);

SubToolStrip(this.Name);

}

}

只是一個簡單思路,所有窗體同時繼承一個基類,在這個基類裡創建連個對象ToolStrip(在Mdi窗口上添加按鈕的控件),List(這裡為了簡單期間,用了一個簡單的List,如果要加上其他效果,例如某個窗體裡欄位改變,讓ToolStrip上的按鈕有不同的現實效果,圖片等等,你需要建立一個ToolStripButtonCollection)每次載入一個新的子窗體時,就在ToolStripButtonCollection增加一項,ToolStripButtonCollection會自動的再ToolStrip上增加一個按鈕,同樣ToolStripButtonCollection減少一項,ToolStrip會自動減少一個按鈕,這裡你還可以偵測ToolStripButtonCollection中的一些值,例如判斷欄位是否改變,是否說需要保存等等。

之後創建Mdi窗體,初始化基底類別裡的toolStrip;

之後建立子窗體,只要是從ChildForm繼承的子窗體,就會自動在Mdi視窗上建立一個以子窗體名稱命名的按鈕,非常類似你想要的效果,還有以上程式碼只是示範思路,重要的還是ToolStripButtonCollection這個類別的創建。

以上是如何在winform中實現圓角選項卡繪製的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:docexcel.net。如有侵權,請聯絡admin@php.cn刪除