DesignerHosting例子中Custom RootDesigner的疑问

netcoder 2011-02-16 09:18:34
最近在研究DesignerHosting这个例子,对于其中的Custom RootDesigner有些疑问:

MyTopLevelComponent通过特性Designer和MyRootDesigner关联,
在代码中,HostSurface调用BeginLoad和MyTopLevelComponent建立关联。
HostSurface->MyTopLevelComponent->MyRootDesigner
访问HostSurface的View属性,竟然调用的竟然是MyRootDesigner的GetView方法,那么从HostSurface到MyRootDesigner到这条路是如何打通的呢?
...全文
297 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
holycomm 2011-02-28
  • 打赏
  • 举报
回复
为何root component很重要呢,root component较之其他component有啥特别的呀?谢谢
Dobzhansky 2011-02-16
  • 打赏
  • 举报
回复
http://support.microsoft.com/kb/813808
这个例子是上面那个例子的1.1版本,
那时还没有 DesignSurface 这个类
可以看到 IDesignerHost 接口以及其他设计时接口的实现.
Dobzhansky 2011-02-16
  • 打赏
  • 举报
回复
2.0 的 DesignSurface 是一个新的封装,
封装了 设计时架构中一个重要的接口 IDesignerHost

这个接口是设计时的核心接口.

HostSurface调用BeginLoad 时指定了要创建 MyTopLevelComponent 类型的
组件(控件) 跟对象, 以便启动设计时环境.

IDesignerHost 接口上有调用:
public IComponent CreateComponent(Type componentClass)

在组件对象创建后, 内部会通过反射获得设计器类型,
然后通过 TypeDescriptor.CreateDesigner 来创建设计器实例.

建立设计器对象和组件对象的关联.

因此, 在设计时, 每个组件对象都有一个对应的设计器对象跟她关联,
负责组件对象的设计时行为.

111,093

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧