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

C# 如何在WinForm中使用自定义构造函数?,c#,winforms,C#,Winforms,我需要在另一个项目中实例化Winform。这是怎么做到的?我目前正在尝试链接默认构造函数。似乎没有调用我的自定义构造函数 还有。。此应用程序的入口点将不在拥有此表单的项目中。意味着以下内容将不会运行: Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new HtmlTestForm()); 我不完全确定这段代码在做什么。这个表格还

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

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

 Application.EnableVisualStyles();
 Application.SetCompatibleTextRenderingDefault(false);
 Application.Run(new HtmlTestForm());
我不完全确定这段代码在做什么。这个表格还能用吗

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

 public HtmlTestForm(Uri uri)
            :this()
        {
            TestURL = uri;
        }
//在另一个项目中创建新表单

HtmlTestForm form = new HtmlTestForm(new Uri("http://SomeUri.html"));
表单将起作用。
但是,
TestURL
将仅在调用
OpenBrowser
后分配。(
:this()
将首先执行整个默认构造函数)

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

.Net表单类是正常的类,碰巧包含一个自动生成的方法,名为
InitializeComponent


它们没有任何您需要注意的魔法(与VB6不同);只要您了解
InitializeComponent
(阅读其源代码)的用途,您就可以用它们做任何您想做的事情。

其中涉及的一点“魔力”是窗体由Windows窗体设计器自动创建。。。我相信这需要一个无参数构造函数。@Jon:不,它不需要。只有在“设计”视图中打开从表单继承的表单时,设计器才会实例化表单。如果不是从表单继承,它就不需要无参数构造函数。天哪,这是个好消息。我会在有机会的时候编辑答案。酷。谢谢我还认为需要无参数构造函数。。。。除非您正在创建用户控件,并且希望能够将其从工具箱拖到设计器中。然后还需要一个无参数构造函数。