【发布时间】:2008-09-09 08:45:43
【问题描述】:
我想通过反射将桌面应用程序加载为另一个应用程序中的控件。
我正在反映的应用程序是旧版应用程序 - 我无法对其进行更改。
我可以动态访问表单,但不能将其作为控件加载。
在 .Net Form 中展开 Control,我可以将反射的 Form 分配为 Control,但它会引发运行时异常。
表单不能作为控件加载。
有没有办法将表单转换为控件?
【问题讨论】:
我想通过反射将桌面应用程序加载为另一个应用程序中的控件。
我正在反映的应用程序是旧版应用程序 - 我无法对其进行更改。
我可以动态访问表单,但不能将其作为控件加载。
在 .Net Form 中展开 Control,我可以将反射的 Form 分配为 Control,但它会引发运行时异常。
表单不能作为控件加载。
有没有办法将表单转换为控件?
【问题讨论】:
是的,这很好用。我现在正在开发一个 .NET 应用程序,它将表单加载到主机表单的面板中。
相关的sn-p:
// setup the new form
form.TopLevel = false;
form.FormBorderStyle = FormBorderStyle.None;
form.Dock = DockStyle.Fill;
form.Show ( );
// add to the panel's list of child controls
panelFormHost.Controls.Add ( form );
【讨论】:
您应该能够将表单添加到父表单的控件集合中...
请看这里: http://vbcity.com/forums/topic.asp?tid=30539
如果失败,请尝试使用适配器模式创建一个容器,其中包含您的旧表单,然后将其加载到 MDI 中?
【讨论】:
你得到什么异常?控件本身是否有可能给出异常(与框架相比)?也许在原始应用程序 Main 函数中调用了一些没有被调用的东西?
【讨论】: