2011-09-06 36 views
8

通常,控件將被添加到表單中。但我需要做一個相反的事情 - 添加一個Form實例到容器用戶控件。將表單添加到UserControl - 這可能嗎?

背後的原因是我需要將第三方應用程序嵌入到我自己的應用程序中。由於複雜性,將表單轉換爲用戶控件是不可行的。

回答

11

這可以通過將窗體的TopLevel屬性設置爲false來實現。它將它變成一個子窗口,與UserControl幾乎沒有區別。下面是一個帶有所需代碼的示例用戶控件:

public partial class UserControl1 : UserControl { 
    public UserControl1() { 
     InitializeComponent(); 
    } 
    public void EmbedForm(Form frm) { 
     frm.TopLevel = false; 
     frm.FormBorderStyle = FormBorderStyle.None; 
     frm.Visible = true; 
     frm.Dock = DockStyle.Fill; // optional 
     this.Controls.Add(frm); 
    } 
} 
+0

This Works,thank you。我注意到的只有一個小故障 - 嵌入式表單停止響應大小調整,它保持固定大小。任何想法如何解決這個問題? – SharpAffair

+0

嗯,這是正常的,嵌入式控件通常不能由用戶調整大小。將用戶控件錨定在底部和右側,以便隨着所處的表單調整大小,從而更改過程中嵌入表單的大小。 –

+0

嵌入式表單和用戶控件都將Dock設置爲Fill。控件調整大小,但嵌入的形式不。 – SharpAffair

相關問題