2012-06-19 27 views
0

我有一個應用程序支持幾種不同的可查看項目的不同組合。每個視圖都可以通過點擊相應的樹節點來打開。問題是我不想將每個單獨的node.checked布爾值存儲在我的.settings文件中的單獨布爾值中。在設置文件C中存儲枚舉位掩碼#

所以我目前正在嘗試使用位掩碼,但是我不知道如何將該類型添加到設置文件編輯器的可選類型。

我應該怎麼做才能保存可選的類型?

回答

2

枚舉類型是幕後的Int32 - 事實上,枚舉類型的變量可以賦予任何整數值,即使這些值不在原始枚舉中。如果在設置中使用了整數類型,則可以將其轉換爲您定義的枚舉類型以使用它。沒有檢查整數值是由枚舉定義的。

在設置文件中使用位掩碼時要小心,儘管可能很難計算出該設置的值。例如,如果要將位1和位3設置爲true,則必須將設置文件中的值設置爲「5」,因爲這是將第一位和第三位設置爲1的整數。

在代碼中,您可以使用位移轉換運算符<<來更輕鬆地讀取值,或者使用.NET 4及更高版本中的Enum.HasFlaghttp://msdn.microsoft.com/en-us/library/system.enum.hasflag.aspx)。

1

您只能使用Int32類型。位掩碼是一組非零位的一個整數(4個字節)或其他指定的整數類型(例如Int16

+0

你如何從標誌轉換爲int? – jth41

+1

@John你的枚舉已經是內存中的_int_。 [Flags]只是一個屬性。要將enum轉換爲int,可以使用顯式轉換'int a =(int)yourEnumVariable;' – Ribtoks

1

如果您希望自定義類型是在WinForms的設置設定你必須定義一個TypeConverter轉換從並返回到字符串。