2008-09-09 19 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

相關問題