在 Windows 窗体 C# 应用程序中拥有配置文件的最简单方法

Posted

技术标签:

【中文标题】在 Windows 窗体 C# 应用程序中拥有配置文件的最简单方法【英文标题】:Simplest way to have a configuration file in a Windows Forms C# application 【发布时间】:2010-09-11 23:41:36 【问题描述】:

我真的是 .NET 新手,但我仍然不了解配置文件的工作原理。

每次我在 Google 上搜索它时,我都会得到关于 web.config 的结果,但我正在编写一个 Windows 窗体应用程序。

我发现我需要使用 System.Configuration 命名空间,但文档没有帮助。

如何定义我的配置文件是 XYZ.xml?或者它是否有配置文件的“默认”名称?我还是没听懂。

另外,我如何定义一个新的部分?我真的需要创建一个继承自 ConfigurationSection 的类吗?

我想要一个包含一些值的配置文件,如下所示:

<MyCustomValue>1</MyCustomValue>
<MyCustomPath>C:\Some\Path\Here</MyCustomPath>

有简单的方法吗?你能简单地解释一下如何读写一个简单的配置文件吗?

【问题讨论】:

您的 .NET 版本是什么?对于 2.0 及更高版本,有一种非常可爱的方式叫做设置。 @Seven 这是一个错字,但它可能意味着“用一个例子来解释”:) 【参考方案1】:

您想使用 App.Config。

当您向项目中添加新项目时,会有一个称为应用程序配置文件的文件。添加那个。

然后在配置/应用设置部分添加键

喜欢:

<configuration>
 <appSettings>
  <add key="MyKey" value="false"/>

通过做访问成员

System.Configuration.ConfigurationSettings.AppSettings["MyKey"];

这适用于 .NET 2 及更高版本。

【讨论】:

实际上它适用于所有版本的 .NET,从 v1.0 开始。 .NET 2.0 中的新类是 ConfigurationManager。 我个人使用“应用程序属性”上的“设置”选项卡(仅限 Framework 2.0 及更高版本),因为 Visual Studio 将为您的设置生成强类型属性的代码。它们还可以包括在运行时读/写的“用户”设置。 @Mike 是的,我有一种感觉,但我不太确定。我对 1 的工作不多。 请注意ConfigurationSettings 已过时,请使用System.Configuration.ConfigurationManager.AppSettings["MyKey"]; 另外请注意,要使用System.Configuration.ConfigurationManager,您的项目需要引用System.Configuration.dll【参考方案2】:

澄清以前的答案...

    向您的项目添加一个新文件(添加新项目应用程序配置文件

    李>

    新的配置文件将在解决方案资源管理器中显示为 App.Config

    使用以下模板将您的设置添加到此文件中

    <configuration>
      <appSettings>
        <add key="setting1" value="key"/>
      </appSettings>
      <connectionStrings>
        <add name="prod" connectionString="YourConnectionString"/>
      </connectionStrings>
    </configuration>
    

    像这样检索它们:

    private void Form1_Load(object sender, EventArgs e)
    
        string setting = ConfigurationManager.AppSettings["setting1"];
        string conn = ConfigurationManager.ConnectionStrings["prod"].ConnectionString;
    
    

    构建后,您的输出文件夹将包含一个名为 .exe.config 的文件。这将是 App.Config 文件的副本。开发人员无需进行任何进一步的工作即可创建此文件。

【讨论】:

这对我很有用。另外两点:在项目中添加新文件时,点击对话框左侧的General节点,发现Application Configuration File。为了在我的代码中使用 ConfigurationManager 类,我必须将 System.Configuration DLL 添加到我的引用中。【参考方案3】:

快速阅读之前的答案,它们看起来是正确的,但似乎没有人提到 Visual Studio 2008 中的新配置工具。它仍然使用 app.config(复制于编译时间到 YourAppName.exe.config),但是有一个 UI 小部件可以设置属性并指定它们的类型。双击项目“Properties”文件夹中的 Settings.settings

最好的部分是从代码中访问这个属性是类型安全的——编译器会发现一些明显的错误,比如错误地输入了属性名。例如,在 app.config 中名为 MyConnectionString 的属性将按如下方式访问:

string s = Properties.Settings.Default.MyConnectionString;

【讨论】:

这在 VS2005 中可用。 不错,但它(项目属性|设置)生成必须编译的代码。如果要更改设置,则需要向客户发布新的二进制文件。 @JohnL4 如果这些设置在“用户”范围内,那么您可以通过编程方式更改它,例如Settings.Default.Test = "abc"; Settings.Default.Save();【参考方案4】:

您应该创建一个 App.config 文件(非常类似于 web.config)。

您应该右键单击您的项目,添加新项目,然后选择新的“应用程序配置文件”

确保在项目中使用 System.Configuration 添加。

然后你可以给它添加值:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="setting1" value="key"/>
  </appSettings>
  <connectionStrings>
    <add name="prod" connectionString="YourConnectionString"/>
  </connectionStrings>
</configuration>

    private void Form1_Load(object sender, EventArgs e)
    
        string setting = ConfigurationManager.AppSettings["setting1"];
        string conn = ConfigurationManager.ConnectionStrings["prod"].ConnectionString;
    

请注意:According to Microsoft,您应该使用 ConfigurationManager 而不是 ConfigurationSettings(请参阅备注部分):

“ConfigurationSettings 类仅提供向后兼容性。对于新应用程序,您应该改用 ConfigurationManager 类或 WebConfigurationManager 类。”

【讨论】:

非常有帮助。解决了我对 T 的问题。 在 Visual Studio 2015 中:单击项目 > 添加引用。向下滚动到一半找到 System.Configuration 单击确定,然后按照 Nathan 的注释更新代码行。【参考方案5】:

配置文件的默认名称是 [yourexe].exe.config。因此notepad.exe 将有一个名为notepad.exe.config 的配置文件,与程序位于同一文件夹中。这是 CLR 和框架所有方面的通用配置文件,但它可以在 &lt;appSettings&gt; 节点下包含您自己的设置。

&lt;appSettings&gt; 元素创建了一个名称-值对的集合,可以作为System.Configuration.ConfigurationSettings.AppSettings 访问。但是,无法将更改保存回配置文件。

还可以将您自己的自定义元素添加到配置文件中 - 例如,定义结构化设置 - 通过创建实现 IConfigurationSectionHandler 的类并将其添加到配置文件的 &lt;configSections&gt; 元素中。然后,您可以通过调用ConfigurationSettings.GetConfig 访问它。

.NET 2.0 添加了一个新类System.Configuration.ConfigurationManager,它支持多个文件,每个用户覆盖每个系统数据。它还支持将修改后的配置保存回设置文件。

Visual Studio 会创建一个名为 App.config 的文件,并在构建项目时使用正确的名称将其复制到 EXE 文件夹中。

【讨论】:

【参考方案6】:

关于 .NET 应用程序配置的最佳(恕我直言)文章位于 CodeProject,Unraveling the Mysteries of .NET 2.0 Configuration。我下一篇最喜欢(较短)的关于 .NET 配置文件中的部分的文章是 Understanding Section Handlers - App.config File

【讨论】:

这确实不是用户要求的最简单的方法,但解开 .NET 2.0 配置的奥秘确实是一个很棒的系列文章。【参考方案7】:

在 Windows 窗体中,您有 app.config 文件,它与 web.config 文件非常相似。但由于我看到您需要的是自定义值,我建议使用 Settings

为此,请打开您的项目属性,然后转到设置。如果设置文件不存在,您将有一个链接来创建一个。然后,您可以将设置添加到您在那里看到的表中,这将生成适当的 XML,以及可用于加载和保存设置的 Settings 类。

设置类将命名为DefaultNamespace.Properties.Settings。然后,您可以使用类似的代码:

using DefaultNamespace.Properties;

namespace DefaultNamespace 
    class Class 
        public int LoadMySettingValue() 
            return Settings.Default.MySettingValue;
        
        public void SaveMySettingValue(int value) 
            Settings.Default.MySettingValue = value;
        
    

【讨论】:

【参考方案8】:

我同意指向 app.config 的其他答案。但是,您应该创建一个实用程序类(AppSettings 是我使用的名称)来读取它们并将它们作为属性公开,而不是直接从 app.config 读取值。 AppSettings 类可用于聚合来自多个存储的设置,例如来自 app.config 的值和来自程序集(AssemblyVersion 和 AssemblyFileVersion)的应用程序版本信息。

【讨论】:

【参考方案9】:

一个非常简单的方法是使用您的your own custom Settings class。

【讨论】:

+1 用于在 msdn.microsoft.com/en-us/library/… 处的 ApplicationSettings 的不太详细的链接,这似乎比 ConfigurationManager 实现更简单。获取/设置设置,不关心“XML Shaping”。【参考方案10】:

用途:

System.Configuration.ConfigurationSettings.AppSettings["MyKey"];

AppSettings 已被弃用,现在被认为已过时 (link)。

此外,app.config 的 appSettings 部分已替换为 applicationSettings 部分。

正如其他人提到的,您应该使用 System.Configuration.ConfigurationManager (link),这是 .NET 2.0 的新功能。

【讨论】:

不推荐使用 ConfigurationSettings 而不是 AppSettings。【参考方案11】:

您使用的是哪个版本的 .NET 和 Visual Studio?

当您创建新项目时,您的解决方案中应该有一个名为 app.config 的文件。这是默认的配置文件。

【讨论】:

以上是关于在 Windows 窗体 C# 应用程序中拥有配置文件的最简单方法的主要内容,如果未能解决你的问题,请参考以下文章

如何使 c# windows 窗体应用程序仅在单台 PC 上运行?

c#入门篇拥有c#窗体程序源码,怎么做出一个小程序

C#如何在 Windows 窗体应用程序中使用事件

Windows 服务与 Windows 窗体在同一进程中

VS2019无法创建Windows窗体应用程序(C#)

如何在 Windows 窗体 C# 中伪造鼠标光标位置?