【发布时间】:2010-10-26 17:32:21
【问题描述】:
我正在开发自己的 WinForms 设计器。它必须能够加载现有的自定义表单类型。我遇到的问题之一是没有默认 ctor 的表单:我的代码当前实例化了表单,然后才能将其加载到设计器中,这需要默认 ctor。
OTOH,VS2008 能够加载这样的表格。我相信它实际上并没有实例化我的表单(如this question 中所述):即使是默认的ctors 也不会被执行。而且它并没有真正执行 InitializeComponent()。我刚刚在该函数中添加了一个消息框,它没有显示。
看起来它动态地模仿了自定义表单类型,并且只执行了 InitializeComponent 中它认为相关的部分代码。
有谁知道我在哪里可以找到有关 VS 设计器如何工作的更多信息。
TIA。
注意:我发现这个 related question 没有令人满意的答案
编辑:附加信息:Steve 将我指向 CodeDom,这非常有趣。但我的问题是我需要加载到我的设计器中的类型已经编译而不是作为源代码提供。我找不到任何方法将 CodeDom 反序列化应用于已编译的代码。
【问题讨论】:
-
您可能会发现自定义现有 Windows 窗体设计元素而不是重新发明它们会更好。他们处理各种你不会想到的场景,直到你的用户抱怨他们缺乏。
-
约翰,这正是我的观点。你认为我在哪里重新发明了任何东西?
标签: winforms visual-studio-2008 designer windows-forms-designer