2009-06-16 46 views
4

我有一款軟件可以在很多機器上正常工作,儘管在一臺機器出現偶爾出現的問題時,MenuStrip和ToolStrip都顯示爲空白如果你創建了一個空對象,那麼就像一個自定義控件一樣。這在我正在調試時不會發生,我不知道如何使問題重新出現,但它確實發生。我想知道是否有人知道可能是什麼問題?MenuStrip和ToolStrip上的「紅十字」問題

它是.NET框架的版本嗎?

感謝

回答

3

這是GDI +問題(「死亡的紅色X」)時常見的情況。你在做OnPaint的任何自定義繪圖嗎?或者也許有一個圖形資源或一個腐蝕或不當處理的字形。

編輯:我已重新閱讀您的問題。你似乎只在其中一臺機器上有這個。爲此,我搜索了一下,我偶然發現了this old thread。底部的職位表明,與虛擬內存關閉有可能是一個問題:

我們還是設法解決這個問題 - 我們 運行 XP嵌入式設備上看到的問題。 XPe映像開發人員 已關閉虛擬內存,並在 即將啓用問題 消失。我相信這是剛剛用完的 內存來顯示圖形系統的 症狀(也許 特別是如果你使用了大量的 雙緩衝)

希望有所幫助。

+0

不,我沒有做任何自定義繪製,只是利用他們作爲標準,我明白你的意思,我當我在過去創建自定義控件時,我無意中發現了這一點。無論如何感謝您的幫助! – ThePower 2009-06-16 08:09:14

2

聽起來像一個Out Of Memory Exception給我的症狀。

編輯: 這有時會導致到System.InvalidOperationException: BufferedGraphicsContext

1

你試圖從比GUI線程的線程上更新GUI控件?將交叉線程操作與吞噬所有內容的異常處理程序結合起來,並在我所維護的應用程序中具有您描述的行爲(在網格控件上,而非菜單欄)。

1

最終聽起來像是一個跨線程問題。

確保在從非主UI線程的線程訪問控件和/或觸發事件時使用Invoke。

1

看到這隻發生在一臺擁有我們產品的超過1000臺計算機上。 在這臺計算機上,我看到一個.NET 3.5程序偶爾會在其數據網格中顯示紅色的X.另一個更簡單的.NET 2.0程序在它的menuStrip中獲得了紅色的X.我只有簡單程序的源代碼,但我可以說沒有任何影響該組件的用戶代碼。沒有跨線程的東西,因爲沒有更新它。它的內容在開發時設置,在程序加載時添加一個項目。程序加載後,Red X失敗很好。

我很驚訝地看到跨兩個不同的框架和一個沒有數據綁定的程序的問題。我非常希望計算機的虛擬內存已關閉。

如果不是這樣,那麼在.NET 2.0和.NET 3.5之間共享的系統部件的任何指導將不勝感激。

更新:有問題的用戶退休的計算機並替換它(這解決了這個問題)