你的问题不是很清楚。也许您想在每个选项卡上显示不同的文本。您可以使用TextRenderer
这样做:
const TextFormatFlags flags = TextFormatFlags.PreserveGraphicsClipping |
TextFormatFlags.VerticalCenter;
TextRenderer.DrawText(e.Graphics, tp.Text, tp.Font, e.Bounds, tp.ForeColor, flags);
在文本前面添加一些空格以便为 X 留出空间,或者为文本定义新的坐标
const int XCrossWidth = 20;
Rectangle textRect = new Rectangle(e.Bounds.Left + XCrossWidth, e.Bounds.Top,
e.Width - XCrossWidth, e.Height);
并将其替换为e.Bounds
in TextRenderer.DrawText(...)
.
UPDATE
因此您想在选项卡上显示自定义图像。我假设您已将这些图像放入imageList1
。您如何知道其中哪些显示在哪个 TabPage 上?
您可以创建自己的选项卡页类并使用这个类来代替TabPage
.
public TabPageEx : TabPage
{
public int ImageIndex { get; set }
}
现在将该属性设置为适当的图像索引。
TabPageEx myTabPage = new TabPageEx(title);
myTabPage.ImageIndex = 3; // As an example.
tabControl1.TabPages.Add(myTabPage);
然后你可以用以下命令绘制图像
TabPageEx tp = (TabPageEx)tabControl1.TabPages[e.Index];
...
Rectangle imageRect = new Rectangle(e.Bounds.Left + 20, 0, 16, 16);
e.Graphics.DrawImage(imageList1.Images[tp.ImageIndex], imageRect);