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

使用 PropertyGrid 的应用程序配置编辑器

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.80/5 (35投票s)

2004 年 2 月 23 日

5分钟阅读

viewsIcon

196819

downloadIcon

5914

使用 PropertyGrid 控件创建的应用程序配置编辑器。

Sample Image - configeditor.jpg

引言

自从我发现了配置节和配置节处理程序后,我一直在使用自定义配置节来存储各种运行时所需的设置。我一直想要一种简单的方法来编辑这些节,无论是用于简单的应用程序设置更改,还是在部署过程中作为自定义安装操作。在本文中,我将介绍开发自己的配置编辑器的方法和逻辑。下载源代码并运行项目,即可看到应用程序的实际运行效果。

背景

我遇到的第一个自定义配置处理程序的例子是在 .NET Framework SDK 附带的 Duamish7 示例应用程序中。我承认,我的第一反应是“我的天哪”。它看起来像大量的代码才能实现几个注册表设置的等效功能。回想起来,我能理解为什么我最初对其价值持怀疑态度。即使不使用自定义配置节处理程序,.NET Framework 类库也在 System.Configuration.ConfigurationSettings.AppSettings 中提供了一个简单的 NameValue 配置节读取类,用于快速轻松地读取 <appSettings> 节中的任何设置。直到最近,我才发现自定义配置处理程序的真正价值。通过自己处理配置节,你不再局限于简单的键值对属性。事实上,你可以构建自己的 XML 结构,并在将你的配置节节点传递给处理程序时进行任何你想要的操作。网上有很多优秀的资源描述了如何实现自己的自定义配置节处理程序,所以这并不是本文的主题,尽管我会在下面包含一些链接。然而,在这款应用程序中,你将看到自己处理配置节的价值,而且是以一种简单的方式。我已经扩展了名称值对的键,以包含一个额外的 XML 属性用于描述设置,即“description”属性,你可以在上面的截图的实际效果中看到它。

进入 PropertyGrid 控件。事实证明,PropertyGrid 非常适合此应用程序。我想要一个两列的网格,第一列只读,第二列可编辑,并且整个网格 nicely 地分成不同的类别。我至少看到过其他一个使用 DataGridDataSet 创建配置编辑器的方法,但它似乎不如使用 PropertyGrid 优雅。如果你想知道 PropertyGrid 控件来自哪里,你会很高兴地发现你已经拥有它了,作为一个 .NET 控件,它是免费使用的,你只需要在 Visual Studio 中将其添加到工具栏。

动态属性。选择了工具和控件后,我面临一个问题——如何有效地反序列化我感兴趣的配置节,创建一个可用于 PropertyGridSelectedObject 属性的对象。PropertyGrid 是一个令人印象深刻的控件。它会自动显示一个类的所有属性,以及可以编辑的属性值。你如何创建对象以及在更改完值后如何处理它是“有趣”的部分。有很多自定义选项可以决定值在属性网格中如何显示。同样,下面提供了 MSDN 资源的链接,其中提供了关于如何使用 PropertyGrid 的优秀描述。

全部归功于。正如经常发生的那样,当我浏览新闻组以寻找创建运行时对象的解决方案时,我偶然发现了一个关于 PropertyDescriptorCollectionPropertyDescriptor 类的帖子。感谢 Venu Madhav (venu_madhav_g@yahoo.com) 指明了正确的方向。此应用程序中的 CustomClass 是从 Venu 的 CustomClass 改编而来,并且应用程序中有说明更改的注释。

使用代码

要使用该应用程序 - 打开 Visual Studio 项目并将应用程序编译为 Windows 应用程序 - 一个 .Exe 文件。然后更改项目属性并将输出类型设置为类库并再次编译。这将创建一个 .dll 程序集。要在您自己的 Windows 应用程序中使用配置编辑器 - 添加对已编译 .dll 文件的引用,并将以下两行代码添加到您的应用程序中(例如,在名为“设置”的菜单下)。就是这样。该应用程序将尝试查找 .Config 文件(如果存在),并自动加载它。

    private void mnuSettings_Click(object sender, System.EventArgs e)
    {
        DotBits.Configuration.ConfigEditor c = new 
					DotBits.Configuration.ConfigEditor();
        c.ShowDialog(this);
    }
    

如果您想将 .Exe 文件包含在您的安装项目中作为自定义操作进行安装,只需将 ConfigEditor.Exe 作为必需文件包含在安装项目中即可。创建一个指向 .Exe 的自定义操作(请记住将 Custom Actions InstallerClass 属性设置为 false)。

注意:项目中有一个示例 App.Config 文件。解压缩后您可以立即运行该项目,以查看应用程序的外观 - 但是您可能会被欺骗,认为您对 .Config 文件的更改未被保存。请记住,每次运行项目时,Visual Studio 都会将 App.Config 文件复制到编译目录中 - 因此,在再次运行项目时,您在运行项目时所做的任何设置更改都将丢失。

链接

自定义配置节和处理程序

应用程序配置文件详解(.NET 冒险之旅)
声明自定义配置节(.NET Framework 开发人员指南)
NameValueSectionHandler 和 DictionarySectionHandler 的自定义元素

PropertyGrid 控件

充分利用 .Net Framework PropertyGrid 控件
通过 Visual Studio .Net 属性浏览器让您的组件真正 RAD

历史

  • 首次发布 2004 年 2 月 22 日
  • 更新的源代码 2004 年 3 月 2 日
© . All rights reserved.