【问题标题】:How do I store an enum value in a Windows Forms settings file?如何在 Windows 窗体设置文件中存储枚举值?
【发布时间】:2008-11-23 04:10:17
【问题描述】:

我正在使用 Windows 窗体和 VS2008。我想在我的应用程序的设置文件中存储一个枚举值。

VS2008 中的设置编辑器只给了我一组有限的类型。令人惊讶的是,枚举似乎不是自动支持的这些类型之一 - 我理解正确吗?

通过阅读该主题,似乎我可能需要编写一个 TypeConverter 类,以使我的枚举能够转换为字符串,反之亦然。我已经为我的枚举实现了这个,并将 TypeConverter 属性添加到我的枚举中,以指示要为该枚举使用哪个转换器类。

但是,当我尝试在我的设置文件(在“选择类型”)对话框中指定它时,它只是说我的类型没有定义,所以我有点卡住了。

谁能向我解释如何将枚举存储在 Windows 窗体应用程序的设置文件中?这似乎是一个非常简单(并且通常需要)的功能,我很惊讶它还没有得到支持,而且我似乎必须做很多工作才能让它工作(而且只有一个枚举!)。

因此,我想我一定是遗漏了什么,而且实际上真的很容易......

假设我的枚举如下所示:

namespace MyApp
{
    enum MyEnum
    {
        Yes,
        No
    }
}

...如何将此枚举中的值存储在我的设置文件中? (当然是检索它)。

(显然我可以只存储一个字符串或整数并自行解释,但这看起来很笨拙,我希望 Windows 窗体能够更干净地处理这类事情。)

【问题讨论】:

    标签: .net winforms enums settings typeconverter


    【解决方案1】:

    枚举实际上与数字类型(默认 int)相差不远,可以互换使用。我认为来回转换和存储 int 并不笨重。事实上,只有字符串可以存储在设置文件中。这确实意味着,通过扩展,任何可序列化为字符串的东西。

    另一种方法是存储枚举的文本值(因此它是人工可编辑的)并使用 Enum.Parse(type, string) 对其进行解析。

    【讨论】:

    • 我更喜欢文本值而不是整数。确实只有字符串可以存储在设置文件中,但实际上任何可序列化的内容都可以存储在那里。
    • 我想这和 Windows 窗体一样好 - 我仍然认为我必须自己处理枚举很笨重,但感谢 Enum.Parse() - 和 Enum.Format( ) 我可以很简单地直接使用设置字符串来做到这一点。
    • 你甚至不需要 Enum.Format。你可以只 ToString 值。
    • 啊,是的,我确实尝试过 ToString(),但智能感知告诉我它已经过时了并使用 Enum.Format() - 检查时,我发现它告诉我一个特定的(不同的) ToString() 的重载,所以我现在使用 ToString() 并且它工作正常。很好,觉得这很奇怪 :-)
    猜你喜欢
    • 1970-01-01
    • 2012-06-21
    • 1970-01-01
    • 2012-04-05
    • 1970-01-01
    • 1970-01-01
    • 2019-10-02
    • 1970-01-01
    • 2015-11-12
    相关资源
    最近更新 更多