Win控件开发总结
Win 控件开发总结一------开篇 我本人不是专业的控件开发人员,只是在平常的工作中,需要自己开发一些控件。在自己 开发 Win 控件的时候,没有太多可以借鉴的资料,只能盯着 MSDN 使劲看,还好总算有 些收获。现在我会把这些经验陆陆续续的总结出来,写成一系列方章,希望对看到的朋友有所帮 助。今天我来开个头。 其实开发 Win 控件并不是很复杂,.NET 为我们提供了丰富的底层支持。如果你有 M FC 或者 API 图形界面的开发经验,那么学会 Win 控件可能只需要很短的时间就够了。 自己开发的 Win 控件通常有三种类型复合控件(Composite Controls),扩展 控件(Extended Controls),自定义控件(Custom Controls)。 复合控件 将现有的各种控件组合起来,形成一个新的控件,将集中控件的功能集中起来。 扩展控件在现有控件的控件的基础上派生出一个新的控件,为原有控件增加新的功能或 者修改原有控件的控能。 自定义控件直接从 System.Windows.s.Control 类派生出来。Control 类提供控 件所需要的所有基本功能,包括键盘和鼠标的事件处理。自定义控件是最灵活最强大的方法,但 是对开发者的要求也比较高,你必须为 Control 类的 OnPaint 事件写代码,你也可以重写 Con trol 类的 WndProc 方法,处理更底层的 Windows 消息,所以你应该了解 GDI+和 Windows API。 本系列文章主要介绍自定义控件的开发方法。 控件(可视化的)的基本特征 1. 可视化。 2. 可以与用户进行交互,比如通过键盘和鼠标。 3. 暴露出一组属性和方法供开发人员使用。 4. 暴露出一组事件供开发人员使用。 5. 控件属性的可持久化。 6. 可发布和可重用。 这些特征是我自己总结出来,不一定准确,或者还有遗漏,但是基本上概括了控件的主要 方面。 接下来我们做一个简单的控件来增强一下感性认识。首先启动 VS2005 创建一个 ClassLi brary 工程,命名为 CustomControlSample,VS 会自动为我们创建一个 solution 与这个工 程同名,然后删掉自动生成的 Class1.cs 文件,最后在 Solution explorer 里右键点击 Custo mControlSample 工程选择 Add-Classes 添加一个新类,将文件的名称命名为 FirstCont rol。下边是代码 using System; using System.Collections.Generic; using System.Text; using System.Windows.s; using System.ComponentModel; using System.Drawing; namespace CustomControlSample { public class FirstControl Control { public FirstControl { } // ContentAlignment is an enumeration defined in the System.Drawing // namespace that specifies the alignment of content on a drawing // surface. private ContentAlignment alignmentValue ContentAlignment.MiddleLeft; [ Category“Alignment“, Description“Specifies the alignment of text.“ ] public ContentAlignment TextAlignment { get { return alignmentValue; } set { alignmentValue value; // The Invalidate invokes the OnPaint described // in step 3. Invalidate; } } protected override void OnPaintPaintEventArgs e { base.OnPainte; Stringat style new Stringat; style.Alignment StringAlignment.Near; switch alignmentValue { case ContentAlignment.MiddleLeft style.Alignment StringAlignment.Near; break; case ContentAlignment.MiddleRight style.Alignment StringAlignment.Far; break; case ContentAlignment.MiddleCenter style.Alignment StringAlignment.Center; break; } // Call the DrawString of the System.Drawing class to write // text. Text and ClientRectangle are properties inherited from // Control. e.Graphics.DrawString Text, Font, new SolidBrushForeColor, ClientRectangle, style; } } } 在上一篇文章里我们创建了一个简单的控件 FirstControl,现在我来介绍一下怎么使用和 调试自己的控件。我希望将过程写的尽可能的详细,让想学习控件开发的朋友容易上手,高 手们见谅。 在同一个 solution 里添加一个 Windows Application 工程(在 Solution Explorer 里右键点击 CustomControlSample solution 选择 Add-New Project) ,命名为 TestControl。 VS 会为你自动生成一个 , 文件名为 1.cs。 在 Solution Explorer 里双击 1.cs 文件进入到 设计界面。现在我们将 FirstControl 控件添加到工具 箱(ToolBox)里,在 Toolbox 上右键点击,在弹出的菜单中选择 Choose Items ,在 出现的 Choose Toolbox Items 对话框中点击 Browse 按钮,在 Open 对话框中选择我 们的控件工程生成的dll(我的dll在 F\Programs