在除第一个选项卡之外的所有选项卡上绘制图标?

时间:2019-03-03 21:52:36

标签: c# .net

我正在制表符控件上绘制小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存在多少个选项卡,但是当有多个选项卡时,这会在第一个选项卡上绘制。

1 个答案:

答案 0 :(得分:1)

  

我不想关闭第一个标签,所以我不想在上面画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);       
        }     
    }