我们可以加载.Net表单作为控件吗?

时间:2020-03-05 18:49:53  来源:igfitidea点击:

我想通过反射将桌面应用程序加载为另一个应用程序内的控件。

我要反映的应用程序是旧版应用程序,我无法对其进行更改。

我可以动态访问该窗体,但不能将其作为控件加载。

在.Net中,Form在Control上扩展,我可以将反映的Form分配为Control,但它会引发运行时异常。

表单不能作为控件加载。

有什么方法可以将表单转换为控件?

解决方案

回答

我们应该能够将表单添加到父表单的控件集合中。

看这里:
http://vbcity.com/forums/topic.asp?tid=30539

如果失败,请尝试使用适配器模式创建一个容器,其中包含旧表单,然后将其加载到MDI中?

回答

是的,这很好。我现在正在开发.NET应用程序,该应用程序将表单加载到主机表单的面板中。

相关代码段:

// 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 );

回答

你有什么例外?控件本身是否可能给出异常(相对于框架)?也许在原始应用程序中调用了某些未调用的主函数?