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