簡體   English   中英

在除第一個選項卡之外的所有選項卡上繪制圖標?

[英]Draw icons on all tabs except the first one?

我在選項卡控件上繪制小x,以便可以將其關閉。

我不想關閉第一個選項卡,所以我不想在第一個選項卡上繪制x。

如何使其忽略第一個標簽?

var tabPage = this.tabBrowser.TabPages[e.Index];
var tabRect = this.tabBrowser.GetTabRect(e.Index);
tabRect.Inflate(-2, -2);

var closeImage = Properties.Resources.closeicon;
e.Graphics.DrawImage(closeImage, (tabRect.Right - closeImage.Width), tabRect.Top + (tabRect.Height - closeImage.Height) / 2);
TextRenderer.DrawText(e.Graphics, tabPage.Text, tabPage.Font, tabRect, tabPage.ForeColor, TextFormatFlags.Left);

我確實嘗試檢查tabBrowser.Count存在多少個選項卡,但是當有多個選項卡時,這最終會在第一個選項卡上繪制。

我不想關閉第一個選項卡,所以我不想在第一個選項卡上繪制x。

?...只需檢查e.Index > 0像這樣:

    private void tabBrowser_DrawItem(object sender, DrawItemEventArgs e)
    {
        // always draw the tab text:
        TextRenderer.DrawText(e.Graphics, tabPage.Text, tabPage.Font, tabRect, tabPage.ForeColor, TextFormatFlags.Left);

        // only draw the X if we are not the first tab:
        if (e.Index > 0)
        {
            var tabPage = this.tabBrowser.TabPages[e.Index];
            var tabRect = this.tabBrowser.GetTabRect(e.Index);
            tabRect.Inflate(-2, -2);

            var closeImage = Properties.Resources.closeicon;
            e.Graphics.DrawImage(closeImage, (tabRect.Right - closeImage.Width), tabRect.Top + (tabRect.Height - closeImage.Height) / 2);       
        }     
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM