2010-10-04 87 views
2

我有一个应用程序在客户帐户上运行测试,以判断他们的服务是否正常工作。在运行测试的过程中,应用程序读取每个测试并检查它是否通过/失败/等等......它在tabPage本身上以绿色复选标记/红色x作为图像键...将图像键分配为所以C#TabPage ImageKey没有绘制

(tabPage as TabPage).ImageKey = "pass.png"; 

tabPage实际上是一个传递给函数的对象,所以我可以从不同的方法引用它。

当(动态地)创建tabPage的tabControl时,将imageList添加到tabControl(这是图像从中拉出的位置)。

(tabControl[0] as TabControl).ImageList = imageList2; 

因此,当方法最终得到分配ImageKey的代码时,它会运行代码,但它只是显示为空白图像。这很奇怪,因为它适用于某些人而不是其他人。它目前并不适用于我的atm,并且它们在执行源代码时不显示。有没有人有任何想法?这里有一张图片来帮助描述这个问题......更多的代码需要遵循。 Example Image

+0

它是否适合一些,确保每个像素的比特图像匹配桌面上的。如果图像的性质是由于BPP设置而不能清晰显示的,那么您可能必须确保它确实如此。你需要做一些技巧.. ..有差异BPP图像,将图像转换为兼容格式等。 – Nayan 2010-10-04 15:42:15

+0

不确定你的意思是什么,你可以尝试澄清一点好? – Alex 2010-10-04 15:51:00

+0

正确检查ImageList。观察TransparentColor字段。当某种颜色应该是透明的时候它是有用的。然后检查您为其“PixelFormat”值添加的图像。如果可能,保持它们相同。最后,检查图像列表的“ColorDepth”。理想情况下,应该匹配图像的像素格式。在我看来,24和32位应该是首选。 – Nayan 2010-10-04 16:23:53

回答

3

您需要的答案有可能是长期的,因为过去了,但我有同样的问题,这里是我的解决方案:

设置ImageKey不起作用,但设置的ImageIndex不会导致图标显示。我做了一个枚举器,将图标映射到它们的索引。

private enum TabIconCodes : int 
{ 
    Stopped = 1, 
    Running = 2, 
} 
unitTab.ImageIndex = (int)TabIconCodes.Stopped; 

这不是一个理想的解决方案,但它确实有效。

1

Hy!关于同一概念的另一种解决方案:

tabp.ImageIndex = ImageListTabpages.Images.IndexOfKey("ImageKey") 

它确实对我有用。

0

之前建立ImageKey为PageTab的PageTab的TabControl的需要具有的ImageList设置和PageTab必须添加到TabControl