TabControl ItemsCG with tabpage image

TabControl ItemSize with TabPage ImageKey

我有一个 TabControl,我想在其中将选项卡保持为固定大小,并且我希望选项卡中有图标。我设置了 TabControl.SizeMode = FixedTabControl.ItemSize = 100, 18。我还设置了 TabControl.ImageList 并通过 TabPage.ImageKey 将图像分配给选项卡。

下面是我注释掉分配 ImageKey:

时的样子

这是我分配 ImageKey:

时的样子

图标有某种 "alignment" 吗?我希望它们位于空白 space 的最左侧,但它们从文本开始的地方开始。有什么建议吗?

(顺便说一句 - 如果我设置 TabControl.SizeMode = Normal,我会按照我想要的方式获取选项卡内容,但选项卡的大小不是固定的):

我可以通过 TabControl.SizeMode = Fixed(在 Windows 10)验证您遇到的问题。我最初是在用图标配置 TabPage 时在设计器中看到的。然而,令人恼火的是,如果关闭并重新打开设计器,问题就会自行纠正。这表明某种 window 样式设置,并且有一些 Tab Control Styles set in the CreateParams Property 基于 SizeMode 属性。但是,我没有找到尝试应用 TCS_FORCEICONLEFT 样式的解决方案。如果在显示控件之前设置了 ImageIndex 属性,则对齐方式符合要求。所以我认为必须在句柄创建时配置一些东西。

如果您在设置 TabPage.ImageIndex 属性 后调用表单的 RecreateHandle 方法,表单将重新绘制并且看起来一切正常。但是,这会导致表单 闪烁 。在 TabControl 上调用 Control.RecreateHandle 方法也可以。这是一个受保护的方法,需要使用派生的 TabControl 来公开该方法,或者您可以使用反射来调用该方法。

public class MyTC : TabControl
{
    public void FixIcon()
    {
        RecreateHandle();
    }
}