2010-02-04 72 views
3

我有我正在使用的第三方代碼庫;該庫的一部分是一個winforms應用程序,用於編輯該庫使用的配置文件。我想將他們的配置編輯器應用程序嵌入到我的應用程序中。將表單轉換爲UserControl

我有他們的庫的源代碼和配置編輯器(據我所知)使用標準控件的直接Winforms應用程序。我試圖將應用程序的主窗體轉換爲UserControl,以便我可以將其託管在我的WPF應用程序中(WPF的WindowsFormsHost不會託管Form對象,我得到一個異常)。

我改變了表單對象從UserControl而不是Form繼承,並修復了所有的編譯器錯誤(沒有很多,只是屬性初始化不存在於UserControl上),但是發生了什麼是我剛剛轉換的控件只是空白。

當我運行我的測試應用程序時,我看不到任何組成原始窗體的控件,只是一個空白頁面。

任何想法?我真的不想從頭開始重新實現他們的應用程序,這會吸引。

編輯:我忘了提及我在WinForms應用程序而不是WPF中測試它,以便在嘗試從WPF使用它之前讓控件工作。

回答

6

顯然,InitializeComponent()方法不再正常運行。不知道爲什麼當然。

也許更好的做法是把形式控制:

public partial class Form1 : Form { 
    public Form1() { 
     InitializeComponent(); 
     var f2 = new Form2(); 
     f2.TopLevel = false; 
     f2.Location = new Point(5, 5); 
     f2.FormBorderStyle = FormBorderStyle.None; 
     f2.Visible = true; 
     this.Controls.Add(f2); 
    } 
    } 
1

我不知道爲什麼,但他們的InitializeComponent()方法已基本設置的所有控件Visible屬性爲False。我想它必須使用某種形式的啓動事件來將它們更改爲可見的,而不會將其作爲UserControl調用,並將它們的可見性設置回true以修復它。

+1

當您最初開闢形式的設計(前把它變成一個用戶控件),你看到的所有控件? – MusiGenesis 2010-03-31 21:49:03

0

我有一個類似的問題,只有在InitializeComponent addig控件丟失。 這樣

this.Controls.Add(this.button1); 
    this.Controls.Add(this.button2);