如何在WinForm中使用自定义构造函数?

Nic*_*ick 6 c# winforms

我需要在另一个项目中实例化一个Winform.这是怎么做到的?我目前正在尝试链接默认构造函数.似乎我的自定义构造函数没有被调用.

此外..此应用程序的入口点将不在拥有此表单的项目中.意味着以下内容不会运行:

 Application.EnableVisualStyles();
 Application.SetCompatibleTextRenderingDefault(false);
 Application.Run(new HtmlTestForm());
Run Code Online (Sandbox Code Playgroud)

我不完全确定这段代码是做什么的.表格还能起作用吗?

private HtmlTestForm()
        {
            InitializeComponent();
            OpenBrowser(new Uri(TestURL));
        }

 public HtmlTestForm(Uri uri)
            :this()
        {
            TestURL = uri;
        }
Run Code Online (Sandbox Code Playgroud)

//在另一个项目中新建表单

HtmlTestForm form = new HtmlTestForm(new Uri("http://SomeUri.html"));
Run Code Online (Sandbox Code Playgroud)

SLa*_*aks 8

表格将有效.
但是,TestURL只会在OpenBrowser通话后分配.(: this()将首先执行整个默认构造函数)

相反,您应该InitializeComponent在自定义构造函数中单独调用,而不是链接到默认值.

.Net表单类是碰巧包含自动生成的方法的普通类InitializeComponent.
它们没有你需要注意的任何魔法(与VB6不同); 只要您了解InitializeComponent(阅读其来源)的目的,您就可以随心所欲地做任何事情.

  • @Jon:不,不是.如果在"设计"视图中打开从其继承的表单,则设计器仅实例化您的表单.如果您不从表单继承,则不需要无参数构造函数. (3认同)