TabControl上图像对齐的问题

时间:2011-08-30 19:29:16

标签: c# winforms tabcontrol

我正在使用c#winform TabControl。我创建了一个ImageList,将其与TabControl相关联,并用一些图片填充它。问题是,当我为特定选项卡设置ImageIndexImageKey时,图像会显示在选项卡上,但它会覆盖选项卡上的文本。为了增加我的困惑,一个TabPage特别将图像渲染到正确的位置(图像后跟文本)。将图片放在正确位置的页面是我TabPage首先设置ImageIndex属性的TabControl ...

我在谷歌上搜索并在另一个论坛上发现了一个帖子,其中有人描述了这个问题,每个人都说他们无法重现这个问题。任何想法可能是什么问题?我真的不知道该尝试什么。

修改

很抱歉这个混乱。我有一个ImageList对象,其ImageList属性与ImageIndex相关联,有两个图像。当我在TabPageTabControl设置TabControl属性时(根据我的阅读),它应该将TabPage上的实际标签呈现为图片,然后是文字。这是我在TabControl中为第一个 Tab设置图片时会发生的情况,但是后面的每个标签都会使用覆盖标签上文字的图片进行渲染。因此文本出现在图像后面。我使用for循环为每个for (int i = 0; i < tabControl.TabPages.Count; i++) { tabControl.TabPages[i].ImageIndex = SOME_IMG_INDEX; } 设置图像:

TabPage

TabControl.TabPages集合的索引0处的{{1}}看起来正常(图片后跟文字)。其他人将图像放在文本的顶部。即使我要在索引2处开始for循环迭代,索引2也会正确呈现,但之后的任何内容都会使图像覆盖文本。我希望这有助于使问题更清楚。

2 个答案:

答案 0 :(得分:2)

我发现重新创建问题的唯一方法是我更改SizeMode上的TabControl属性。

当我将其更改为Fixed时,图像和文字混合在一起。将其更改回“正常”会再次正确地呈现所有内容。

answer讨论了如何删除这些标签并将其作为解决此问题的黑客添加回来,发布在MSDN上。我尝试了黑客,但它确实有效。

<强>更新

正如Steve_Overflow所指出的,这是一个简单的解决方法来正确更新标签:

tabControl1.SizeMode = TabSizeMode.Fixed;

for (int i = 0; i < tabControl1.TabPages.Count; i++)
  tabControl1.TabPages[i].ImageIndex = SOME_IMG_INDEX;

tabControl1.ItemSize = tabControl1.ItemSize;

答案 1 :(得分:0)

如果你想要固定尺寸标签,一起使用这些代码(不知道原因,但这样可以解决问题)

tabControl.SizeMode = TabSizeMode.Normal;
tabControl.SizeMode = TabSizeMode.Fixed;
相关问题