2010-04-12 101 views
1

我想顯示靜態(共享)在運行時對象在PropertyGrid中,但如果我嘗試設置這樣的網格的選擇對象屬性:如何在PropertyGrid中顯示靜態(共享)對象的屬性?

_propertyGrid.SelectedObject = System.Windows.Forms.Application 

我得到一個編譯錯誤:

'Application' is a type and cannot be used as an expression.

有沒有辦法在PropertyGrid中顯示靜態(共享)對象或對象的屬性?

回答

5

即賦值語句確實沒有從面向對象的觀點很有道理,因爲靜態對象確實不是一個對象 - 它只是一個方法和屬性集合,沒有任何形式的一致性,除了類名。不過,我明白你想要做什麼。

你需要給它一個對象實例。

我會建議創建一個包裝類(可能是一個單例),將Application對象所需的屬性公開出來,並將其用作數據源。

+0

這是一個有趣的OOP問題,我從來沒有真正不得不思考之前。除了嘗試在網格視圖中顯示靜態對象之外,這個問題也更廣泛地應用於將靜態對象作爲函數參數傳遞的內容。看起來你不能。無論如何。 – 2010-04-12 14:32:12

+0

@保羅:我更新了我的答案,以便更明確。 – 2010-04-12 14:45:16