Windows窗体C#的TabControl的ImageList对齐?(Windows Forms

2019-10-31 15:34发布

是否有可能从一个TabControl的ImageList中对齐图像图标的文字吗?

眼下,图像图标被放在左边,将文本的,正确的。 我宁愿在左边的文字和图标的,正确的。 这可能吗?

Answer 1:

你不能这样做,除非你绘制的TabPage自己。 要做到这一点,你需要设置DrawMode的财产TabControlOwnerDrawFixed然后处理DrawItem事件。
这是一个非常简单的例子,要做到这一点,你可以添加一些代码来更改所选选项卡的背景颜色,如果你愿意的话,知道哪个选项卡中选择只检查e.State值:

private void tabControl1_DrawItem(object sender, System.Windows.Forms.DrawItemEventArgs e)
{
    // values
    TabControl tabCtrl = (TabControl)sender;
    Brush fontBrush = Brushes.Black;
    string title = tabCtrl.TabPages[e.Index].Text;
    StringFormat sf = new StringFormat();
    sf.Alignment = StringAlignment.Near;
    sf.LineAlignment = StringAlignment.Center;
    int indent = 3;
    Rectangle rect = new Rectangle(e.Bounds.X, e.Bounds.Y + indent, e.Bounds.Width, e.Bounds.Height - indent);

    // draw title
    e.Graphics.DrawString(title, tabCtrl.Font, fontBrush, rect, sf);

    // draw image if available
    if (tabCtrl.TabPages[e.Index].ImageIndex >= 0)
    {
        Image img = tabCtrl.ImageList.Images[tabCtrl.TabPages[e.Index].ImageIndex];
        float _x = (rect.X + rect.Width) - img.Width - indent;
        float _y = ((rect.Height - img.Height) / 2.0f) + rect.Y;
        e.Graphics.DrawImage(img, _x, _y);
    }
}


文章来源: Windows Forms C# TabControl ImageList Alignment?