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

应用程序的简单配置窗体

2005年9月13日

2分钟阅读

viewsIcon

37579

downloadIcon

1080

一个用于应用程序的简单配置窗体。

Configuration Control Image

引言

我开发的一个大型项目的一部分需要大量的用户参数。 最初,我添加了一些窗体,每个窗体都包含其参数逻辑,但后来我决定将这些窗体合并到一个窗体中,就像 Eclipse 的“首选项”或 Visual Studio 的“选项”一样。

不幸的是,我没有在网上找到任何相关内容,因此我被迫自己编写一些基本的控件。

开始吧

其概念是将一个 TreeNode 添加到 TreeView 控件,并将每个树节点与一些自定义控件关联起来。 每次用户选择树节点时,相关的控件都会被激活。

步骤 1

创建一个 ConfigurationForm 类的实例。

ConfigurationForm m_configurationForm = new ConfigurationForm();

第二步

创建您自己的控件,该控件继承自我的 ConfigurationBaseControl,并重写和实现两个抽象方法(ApplyRestore)。

public class NewControl : ConfigurationBaseControl
{
    public NewControl(string configName): base(configName)
    {

    }

    //override the Restore method and add functionality
    public override void Restore()
    {

    }

    //override the Apply method and add functionality
    public override void Apply()
    {
    }
}

步骤 3

创建 ConfigurationTreeNode,并将自定义控件作为参数传递给构造函数。

ConfigurationTreeNode config = new ConfigurationTreeNode("NewControl", 
                       new NewControl("New Control Configuration"));

构造函数中的第一个参数是 TreeView 表单中 TreeNode 项目的名称。

步骤 4

将配置树节点添加到窗体,以便它会出现在左侧树视图控件中。

m_configurationForm.AddConfigItem(config);

一些说明

通常,应用程序中的业务逻辑配置类是静态的和单例的,因此您实现的每个自定义配置控件都会使用您提供的一些静态配置类,这就是为什么可以实现一个通用的配置窗体。

ConfigurationForm.AddConfigItem(TreeNode) 方法将配置树节点添加到树的根目录。 如果要向配置树节点添加两个或多个级别,则将其添加到根配置树节点,然后将其添加到窗体中,就像使用常规 TreeView 一样。

您可以向配置窗体添加一个基本的 TreeNode,但它不会与任何自定义控件关联。 您可以在演示项目中看到一个示例。

您可以使用方法 ConfigurationForm.RemoveConfigItem( 树节点项目名称 ) 删除配置节点。

我已经为四个按钮(确定、取消、还原、应用)实现了事件处理程序。

private void ClickHandler(object sender, System.EventArgs e)
{
    //ok button clicked
    if (sender == m_okBtn)
    {
        this.TreeWalker(m_optionsTV.Nodes,Action.Apply);
    }
    //cancel button is clicked
    else if (sender == m_cancelBtn)
    {
        this.Hide();
    }
    //restore button is clicked
    else if (sender == m_restoreBtn)
    {
        this.TreeWalker(m_optionsTV.Nodes,Action.Restore);
    }
    //apply button is clicked
    else if (sender == m_applyBtn)
    {
        this.TreeWalker(m_optionsTV.Nodes,Action.Apply);
    }
}

但是,可以向按钮添加其他事件处理程序。 目前,“确定”和“应用”按钮的默认行为相同。 当单击它们时,TreeWalker 方法会遍历所有自定义配置控件并调用它们的 Apply 方法。

© . All rights reserved.