演练:创建 windows 窗体工具箱控件

windows 窗体工具箱在 Visual Studio 2010 SDK 包含允许您创建控件将自动添加到 工具箱的控件模板,即使安装该扩展。 本演练演示如何使用模板创建可以将其分发给其他用户的计数器控件。

系统必备

若要完成本演练,您必须安装 Visual Studio 2010 SDK。

备注

有关 Visual Studio SDK 的更多信息,请参见 扩展 Visual Studio 概述。若要查找有关中所列如何下载 Visual Studio SDK,请 Visual Studio Extensibility Developer Center 参见 MSDN 网站上。

查找在 Visual Studio 的 windows 窗体工具箱控件模板

windows 窗体工具箱控件模板可在 新项目 对话框中,在 安装的模板下,在以下位置:

  • Visual Basic扩展性。 该项目的语言是 Visual Basic。

  • Visual C#扩展性。 该项目的语言是 C#。

创建 windows 窗体工具箱控件项目

windows 窗体工具箱控件模板创建一个未定义用户控件并提供需要将控件添加到 工具箱的所有功能。

创建项目

  1. 在**“文件”菜单上,单击“新建”,然后单击“项目”**。

  2. 新项目 对话框中,在 安装的模板下,展开这种首选编程语言的节点然后选择 扩展性。 在 " 项目类型列表中,选择 windows 窗体工具箱控件

  3. 名称 框中,键入要用于项目的名称。 (本演练使用名称 计数器。)单击**“确定”**。

    这将创建在 工具箱包含一个用户控件,特性放在控件中, VSIX,并为部署清单的解决方案。 名称 框设置解决方案的名称和命名空间的名称,但是,它不设置控件的名称,当出现在 工具箱。 稍后将安装可在演练。

生成控件的用户界面

计数器 控件需要两个子控件: Label 显示当前计数的和 Button 重置计数为 0。 其他子控件,因为调用方将增大计数器程序模型,则不需要。

生成用户界面

  1. 解决方案资源管理器,打开该对话框的双击 ToolboxControl.cs 在设计器。

  2. 工具箱,将 标签 拖动到设计图面。

  3. 调整用户控件大小为 150 x 50 像素,然后调整按钮的设置为 50 x 20 像素。

  4. 属性 窗口中,设置控件的下列值在设计图面上。

    控件

    属性

    Label1

    Text

    ""

    Button1

    名称

    btnReset

    Button1

    Text

    重置

编码的用户控件

计数器 控件是否显示方法递增计数器、引发事件的,只要计数器增加, 重置 按钮和三个属性存储当前计数,显示文本,并显示或隐藏 重置 请按。 ProvideTolboxControl 属性确定在 工具箱计数器 控件在何处出现。

编码的用户控件

  1. 双击窗体打开其代码窗口中加载事件处理程序。

  2. 如下面的示例所示,在事件处理程序中,创建一个整数存储计数器值和字符串存储显示文本,。

    int currentValue;
    string displayText;
    
  3. 创建下列公共属性声明。

    public int Value {
        get { return currentValue; } 
        }
    
    public string Message {
        get { return displayText; }
        set { displayText = value; }
    }
    
    public bool ShowReset {
        get { return btnReset.Visible; }
        set { btnReset.Visible = value; }
    }
    

    调用方访问这些属性 get 和 set 计数器的显示文本和显示或隐藏 重置 按钮。 调用方能够获取只读 Value 属性的当前值,,但不能直接设置值。

  4. 将以下代码放在控件的 Load 事件。

    private void ToolboxControl_Load(object sender, EventArgs e)
    {
        currentValue = 0;
        label1.Text = Message + Value;
    }
    

    ,在其值是应用之前,将 Load 事件的标签文本使目标属性加载。 将构造函数中的标签文本导致空的标签。

  5. 创建下列公共方法递增计数器。

    public void Increment()
    {
        currentValue++;
        label1.Text = displayText + Value;
        Incremented(this, EventArgs.Empty);
    }
    
  6. 添加 Incremented 事件的说明。

    public event EventHandler Incremented;
    

    调用方可以将处理程序添加到此事件响应计数器上的值更改。

  7. 如下面的示例所示,返回设计视图和 重置 双击按钮以生成 btnReset_Click 事件处理程序,然后填充。

    private void btnReset_Click(object sender, EventArgs e)
    {
        currentValue = 0;
        label1.Text = displayText + Value;
    }
    
  8. 在类定义中,右击类名,单击 重构,单击 重命名,然后更改类的名称。 计数器。 这是在 工具箱要显示的名称。

  9. 紧邻类定义,在 ProvideToolboxControl 属性声明,将第一个参数的值是从 "Counter" 到 "General"。 这将设置承载在 工具箱的控件项目组的名称。

    下面的示例演示 ProvideToolboxControl 属性和调整的类定义。

    [ProvideToolboxControl("General", false)]
    public partial class Counter : UserControl
    

    下面的示例演示已完成用户控件的代码。

    using System;
    using System.Windows.Forms;
    
    namespace Counter
    {
        [ProvideToolboxControl("General", false)]
        public partial class Counter : UserControl
        {
            public Counter()
            {
                InitializeComponent();
            }
    
            private void btnReset_Click(object sender, EventArgs e)
            {
                currentValue = 0;
                label1.Text = displayText + Value;
            }
    
            int currentValue;
            string displayText;
    
            public int Value {
                get { return currentValue; } 
                }
    
            public string Message {
                get { return displayText; }
                set { displayText = value; }
            }
    
            public bool ShowReset {
                get { return btnReset.Visible; }
                set { btnReset.Visible = value; }
            }
    
            private void ToolboxControl_Load(object sender, EventArgs e)
            {
                currentValue = 0;
                label1.Text = Message + Value;
            }
    
            public void Increment()
            {
                currentValue++;
                label1.Text = displayText + Value;
                Incremented(this, EventArgs.Empty);
            }
    
            public event EventHandler Incremented;
        }
    }
    

测试控件

若要测试 工具箱 控件,请先测试它在开发环境中然后测试其在已编译的应用程序。

测试控件

  1. 按 F5。

    这将生成项目并打开安装的控件 Visual Studio 的第二个实例。

  2. 在 Visual Studio 的新实例,请创建 windows 窗体项目。

  3. 解决方案资源管理器,打开该对话框的双击 Form1.cs 在设计器。

  4. 工具箱,在 泛型 部件应当显示 计数器 控件。

  5. 计数器 控件拖动到窗体上,然后选择它。 Value、 Message和 ShowReset 属性。 属性 窗口中显示,它使用 UserControl继承的属性。

  6. 设置 Message 属性设置为 计数:。

  7. Button 控件拖动到窗体上,然后将该按钮的名称和文本属性更改为 测试。

  8. 双击按钮在代码视图中打开 Form1.cs 和创建 click 处理程序。

  9. 在中处理程序中,调用 counter1.Increment()。

  10. 在构造函数,因此,在对 InitializeComponent的调用中,键入 Counter1.增加的 += 两次后然后按 tab。

    Visual Studio 生成 Counter1.Incremented 事件窗体级别处理程序。

  11. 显示在事件处理程序中 Throw 语句,键入 mbox,然后按 tab 从生成 mbox 代码段的消息框。

  12. 在下一行,添加以下 if/块else 设置 重置 按钮的可见性。

    if (counter1.Value < 5) counter1.ShowReset = false;
    else counter1.ShowReset = true;
    
  13. 按 F5。

    将打开窗体。 计数器 控件显示以下文本。

    计数:0

  14. 单击**“测试”**。

    计数器增加, Visual Studio 显示消息框。

  15. 关闭消息框。

    重置 按钮消失。

  16. 单击 测试 ,直到达到计数器 5,然后关闭消息框。

    重置 按钮再次出现。

  17. 单击**“重置”**。

    0的重置计数器。

后续步骤

在生成 工具箱 控件时, Visual Studio 创建在 \ bin 名为的 ProjectName.vsix 一个文件 \ 项目的 debug \ 文件夹。 可以通过上载 .vsix 文件部署该控件连接到网络或网站。 当用户打开 .vsix 文件时,该控件安装并将其添加到用户的计算机上的 Visual Studio 工具箱 。 或者,可以上载 .vsix 文件添加到 Visual Studio Gallery 网站,以便用户可以浏览找到它在 扩展管理器

请参见

任务

演练:创建 WPF 工具箱控件

概念

Windows 窗体控件开发基础知识

其他资源

工具箱 (Visual Studio SDK)

用户界面