C# WINFORM 弹出窗口一般都要新建一个Form类吗?

2025-01-03 09:15:40
推荐回答(4个)
回答(1):

1.不需要。单体模式可以解决重复new对象的过程。

假如你希望一个窗口只存在一个,那你不断的new,那一定是不断创建新的对象,结果只能是多窗口同时显示。单体模式将只返回一个唯一对象,这个对象由类的内部产生,而不是外部创建。

2.不理解你为什么说构造函数传值会麻烦,这明明是最简单的传值方法。当然,除了构造函数,为类创建属性,也可以传值。当然,最灵活的方式是委托,为属性的Set方法创建一个委托事件。当赋值时,即刻触发注册此事件的方法,便可使用新值。

3.form.Owner用于指定窗体的父窗体,当你的窗体以对话框方式显示,可以指定此对话框的所有者。当点击次所有者窗体时,页面会被激活到对话框窗体上。

回答(2):

如果您说得是弹出窗口,那么的确如此

new form2 = New Form2();
form2.ShowDialog();
form2.Dispose();

注:
ShowDialog()显示模式窗体
Show()显示非模式窗体
根据具体情况使用

补充:
传递参数不麻烦啊,例如在From2中有个属性
private string _truename = string.Empty;
///


/// 真实姓名。
///

Public string TrueName
{
get { return _truename; }
set { _truename = value; }
}
在From1中,可以这样传递
new form2 = New Form2();
form2.TrueName = "刘德华";
form2.ShowDialog();
form2.Dispose();

再或者,参数可以用数据库或者配置文件保存,不存在传递问题

回答(3):

两个类传值:你可以设置一个public static 的变量,这样就可以直接用“窗体类.变量名”来访问了,注意:变量的初值一定要在构造函数里面设置
newform.Owner是指明弹窗的父窗体
这样可以通过“newform.Owner.父窗体的变量名”来访问父窗体的变量

回答(4):

一般来说你的新建一个form1
然后form1 newform1 = new form1();
nenewform1.Owner = this;
nenewform1.Show();
就行了