8
通常,控件將被添加到表單中。但我需要做一個相反的事情 - 添加一個Form實例到容器用戶控件。將表單添加到UserControl - 這可能嗎?
背後的原因是我需要將第三方應用程序嵌入到我自己的應用程序中。由於複雜性,將表單轉換爲用戶控件是不可行的。
通常,控件將被添加到表單中。但我需要做一個相反的事情 - 添加一個Form實例到容器用戶控件。將表單添加到UserControl - 這可能嗎?
背後的原因是我需要將第三方應用程序嵌入到我自己的應用程序中。由於複雜性,將表單轉換爲用戶控件是不可行的。
這可以通過將窗體的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);
}
}
This Works,thank you。我注意到的只有一個小故障 - 嵌入式表單停止響應大小調整,它保持固定大小。任何想法如何解決這個問題? – SharpAffair
嗯,這是正常的,嵌入式控件通常不能由用戶調整大小。將用戶控件錨定在底部和右側,以便隨着所處的表單調整大小,從而更改過程中嵌入表單的大小。 –
嵌入式表單和用戶控件都將Dock設置爲Fill。控件調整大小,但嵌入的形式不。 – SharpAffair