65.9K
CodeProject 正在变化。 阅读更多。
Home

一种灵活的存储应用程序/用户设置的方法

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.62/5 (6投票s)

2007年6月17日

CPOL

3分钟阅读

viewsIcon

37041

downloadIcon

590

一个简单的类,可以将设置存储在任何位置的 XML 文件中。 该类可以直接用作 VS 中的可视化组件。 直接使用它,或者将其作为更好内容的灵感!

引言

在应用程序中存储设置有很多种方法,但它们似乎都存在严重的缺陷。 属性窗口中的内置设置非常棒,但我们无法选择将文件放置在哪里(或如何命名)。 我喜欢完全控制应用程序和用户设置。 作为用户,很高兴知道属于应用程序的所有文件都放置在应用程序的文件夹中,而不是分布在注册表或某些隐藏的用户文件夹中。 这个简单的类/组件使您可以将简单类型(如 int、double、bool、string)以及通过一些创造力,将更复杂的类型存储在 XML 文件中。 如果您喜欢旧的ini文件,您也会喜欢这个! 这都是在 Visual Studio 2005 和 2.0 框架中完成的。

背景

Microsoft 世界中的大多数东西都非常棒且易于使用。 我不能说设置就是其中之一。 这是我花了好几天尝试不同的方法后,能够想到的存储设置的最佳和最灵活的方法。 我也希望保持它的纯粹 .NET,并且不想包装一些旧的 Win32 DLL...

使用代码

在您的应用程序中添加一个Load事件。 您可以使用ConfigFile属性(在代码中或在设计器中)来指定存储文件,或者将其保留为默认值。

// Application start
private void FormTest_Load(object sender, EventArgs e) {
  // Read settings from file
  settings.Open();
  textBoxTest.Text = settings.Read("textBoxTest.Text", "No settings file yet!");
}

在您的应用程序中添加一个FormClosing 事件。

// Application close
private void FormTest_FormClosing(object sender, FormClosingEventArgs e) {
  // Save settings to file
  settings.Write("textBoxTest.Text", textBoxTest.Text);
  settings.Save();
}

如何开始

  1. 下载演示 - 7.09 KB - 应用程序只是为了感受一下这是什么...
  2. 下载源代码 - 14.9 KB - 包含Settings类本身和简单演示的解决方案。
  3. 决定如何在您的应用程序中使用Settings 。 也许您想跳过包含的设计时支持,使其更简单...
    • 只需从Settings.cs文件中复制并粘贴到您自己的源代码中,或者将Settings.cs文件添加到您的项目中...
    • Settings.dll作为引用添加到您的项目中...
    • 像演示应用程序一样使用它,只需将您的项目保留在同一个解决方案中,然后将 Settings 组件从工具箱拖到您的窗体上...
    • 将其添加到工具箱,使其可用于任何解决方案/项目。 将Settings.dllSettings.xml放在一些永久文件夹中,例如C:\Program Files\Common Files\VisualStudioComponents\... 然后右键单击工具箱,然后选择项... -> 浏览... -> ...\Settings.dll
  4. 使用您自己的功能扩展Settings.cs。 添加对您自己的特殊类和内置类型的支持。

关注点

这篇小文章还简单介绍一下如何创建简单的组件/控件,以便在 Visual Studio 中在设计时使用。 从Component继承会为您提供一个组件,当将其拖到某个窗体中时,该组件最终会出现在组件托盘中(就像计时器一样)。 从Control继承会为您提供一个组件,该组件将保留在您的窗体中(就像Button一样)。 有一本非常好的书叫做“Pro .NET 2.0 Windows Forms and Custom Controls in C#”,ISBN 1-59059-439-8。 阅读它!

如果您创建用户组件,它们可能需要存储设置。 一种好方法是为Settings类提供一个属性。 这样,所有组件都可以将它们的设置存储在同一个文件中!

历史

  • 2007-06-17:提交了本文和代码。

请不要忘记对本文进行投票。 我真的很想知道和学习!

© . All rights reserved.