学习C#,展望GIS,努力成就VGIS
// in CMyControl [Category(S"Appearance")] [Description(S"Specifies widget foreground color.")] _property Color get_ForeColor() { ... } _property void set_ForeColor(Color value) { ... }
现在窗体设计器在“外观”(Appearance)中列出你的 ForeColor 属性并使用帮助描述(Description)。有关设计时属性的更多内容,请参考.NET框架文档中的“组件的设计时属性” Figure 5 类层次结构 Figure 5 显示了.NET框架中的类层次结构,它能说明上述讨论的问题。正如你所看到的,Control 从 Component 派生而来。这是用另外一种方式来说明控件即组件(反之则不然)。更具体地讲,控件是一个用用户界面的组件——能绘制东西并能与用户交互。Control 类还是所有托管窗口类的基类——窗体、按钮、栅格、面板、工具栏等等。Control 类是定义 WndProc 和 ClientSize 以及所有标准窗口事件如 GotFocus 和 Click 的地方。Web控件(System.Web.UI.Control)也是组件,不过从严格的意义上讲,它不是从 System.ComponentModel.Component 派生的。(对于 Web 控件,其名字空间为 System.Web.UI,Control 本身实现 IComponent。) 除了实现 IComponent 之外,System.ComponentModel.Component 还提供了所有组件需要的列集支持,但它是通过从 MarshalByRefObject 派生来实现的。如果想生成一个值列集组件,可以从 MarshalByValueComponent 派生(它实现了 IComponent,IDisposable 和 IServiceProvider)。System.Data.DataColumn,DataSet 和 DataTable 都是是值列集组件的例子。这些对象跨机器/进程边界传递其实际数据。 如果你正在编写其他人也能用窗体设计器拖拽到其窗体的可重用的小组件,那么你必须从 Component 派生。如果你的小组件还具备用户界面——能创建窗口,绘画或与用户交互——那么就应该从 Control 派生。明白了吗?
向 Paul 提问和评论请发到 cppqa@microsoft.com.
©2008 VGIS☆紫微星 转帖请注明出处,留此信息。
本帖子以“现状”提供且没有任何担保,同时也没有授予任何权利。 This posting is provided "AS IS" with no warranties, and confers no rights.
posted on 2008-08-03 21:40 紫微星 阅读(146) 评论(0) 编辑 收藏 所属分类: CSharp
Powered by: 博客园 Copyright © 紫微星