2008-09-09 35 views
6

我想通过反射将一个桌面应用程序作为另一个应用程序中的控件加载。你可以加载.Net窗体作为控件吗?

我正在反思的应用程序是一个遗留问题 - 我无法对其进行更改。

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

在.Net窗体扩展控制,我可以分配反映窗体作为控制,但它会引发运行时异常。

表单无法作为控件加载。

是否有任何方式将窗体转换为控件?

回答

10

是的,这工作得很好。我现在正在开发一个.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); 
+0

经过测试,这工作。 谢谢:-) – Keith 2008-09-09 10:47:01

1

你应该能够在窗体添加到您的父窗体的控件集合...

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

如果失败,请尝试使用适配器模式创建一个容器与你的遗留形式,然后加载它在MDI也许?

1

的就是你得到的异常?控制本身是否有可能发生异常(与框架)?也许在原始应用程序中调用了一些未被调用的主函数?

+0

我得到了一个与TopLevel属性有关的错误,我无法在控件上设置,但可以在窗体上。 – Keith 2008-09-09 10:56:40

相关问题