2010-10-04 58 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