我们在我们自己的设计师中使用了 DesignSurface 和所有优秀的 IDesignerHost。然后将设计的表格以我们自己的定制格式保留,一切都很好。我们还希望将表单导出为基于文本的格式(我们已经这样做了,因为它并不难)。
但是,我们还希望将该文本导入设计器的文档中,这涉及将设计器代码返回到 CodeCompileUnit。不幸的是, Parse 方法没有实现(毫无疑问,有充分的理由)。有替代方案吗?我们不想使用标准 .NET 安装中不存在的任何东西(例如随 Visual Studio 安装的 .NET 库)。
我目前的想法是编译导入的文本,然后实例化表单并将其属性和控件复制到设计表面对象,然后捕获新的 CodeCompileUnit,但我希望有更好的方法。谢谢。
更新:我虽然有些人可能对我们的进展感兴趣。到目前为止,不太好。我发现的简要概述是 Parse 方法没有实现,因为它被认为太难了,存在可以完成工作的开源解析器,但它们并不完整,因此不能保证在所有情况下都能正常工作( NRefactory 是 SharpDevelop 项目中的一个,我相信),并且从实例到设计器的控件复制目前还没有工作。我相信这是因为尽管控件被添加到设计器表面包装的表单实例中,但设计器表面并没有意识到它们的包含。我们的下一个尝试是模拟剪切/粘贴,看看是否能解决它。显然,这是一个巨大的讨厌的解决方法,但我们需要它工作,所以我们'