2010-02-04 73 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);