0
public Form fr;
private void button2_Click(object sender, EventArgs e)
{

       fr = Form1.ActiveForm;

       fr.Hide();

       Form3 fr1 = new Form3(fr);
       fr1.Show();
}
4

2 回答 2

2

您不需要创建Form3为单例(我认为您不能这样做),但您只需要实例化一次。例如你可以使用这样的东西:

public Form fr;
Form3 fr1 = null;
private void button2_Click(object sender, EventArgs e)
{

       fr = Form1.ActiveForm;

       fr.Hide();
       if(fr1==null)
        fr1 = new Form3(fr);
       fr1.Show();
}
于 2013-03-14T19:02:24.583 回答
0

不。

不能将单例模式与 UI 组件一起使用,因为 Windows 窗体封装了一个 Win32 hWnd 窗口,最终需要将其释放,并且您无法复活窗口,必须重新创建它,这与单例模式相反。

此外,Windows 窗体设计器需要一个公共默认构造函数。即使您可以使用单例,您每次在设计器中编辑表单时都需要禁用私有构造函数。

假设您的项目没有消费者,一个更好的主意是将您的表单更改为internal并自己跟踪每个实例化。

于 2013-03-14T19:02:35.980 回答