C#winForm如何不让同一个窗体显示多次
例如我打开登录界面后点击注册,会弹出注册界面我在点击注册就会又出现一个注册窗体,如何在第二次点击的时候让第一次点击弹出的注册界面关闭,本人新手,求详细过程或大概代码...
例如我打开登录界面后点击注册,会弹出注册界面 我在点击注册就会又出现一个注册窗体,如何在第二次点击的时候让第一次点击弹出的注册界面关闭,本人新手,求详细过程或大概代码
展开
4个回答
展开全部
提供几种方法供参考:
方法1:
private void button1_Click(object sender, EventArgs e)
{
frmReg form = new frmReg();
form.ShowDialog(); //直接用ShowDialog方法显示
}
方法2:
private void button2_Click(object sender, EventArgs e)
{
if (this.OwnedForms.Length > 0)
{
//如果存在已经打开的注册窗口,则先关闭打开的注册窗口
//小缺点:要确保OwnedForms[0]指的就是frmReg窗口
this.OwnedForms[0].Close();
}
frmReg form = new frmReg();
form.Show(this); //将本窗口作为注册窗口的拥有者传入,也可用下面2句代替
//form.Owner = this;
//form.Show();
}
方法3:
frmReg form = null; //声明一个全局变量
private void button3_Click(object sender, EventArgs e)
{
if (form == null)
form = new frmReg(); //如果没有已打开的注册窗口,则新开一个
form.TopMost = true; //让注册窗口显示在顶层
form.Show();
}
方法4:
为注册窗口实现单例模式,原理跟方法3类似,就是将判断null放入注册窗口里面,并且不让从外部直接new新窗口,当然还有些细节要注意的
方法1:
private void button1_Click(object sender, EventArgs e)
{
frmReg form = new frmReg();
form.ShowDialog(); //直接用ShowDialog方法显示
}
方法2:
private void button2_Click(object sender, EventArgs e)
{
if (this.OwnedForms.Length > 0)
{
//如果存在已经打开的注册窗口,则先关闭打开的注册窗口
//小缺点:要确保OwnedForms[0]指的就是frmReg窗口
this.OwnedForms[0].Close();
}
frmReg form = new frmReg();
form.Show(this); //将本窗口作为注册窗口的拥有者传入,也可用下面2句代替
//form.Owner = this;
//form.Show();
}
方法3:
frmReg form = null; //声明一个全局变量
private void button3_Click(object sender, EventArgs e)
{
if (form == null)
form = new frmReg(); //如果没有已打开的注册窗口,则新开一个
form.TopMost = true; //让注册窗口显示在顶层
form.Show();
}
方法4:
为注册窗口实现单例模式,原理跟方法3类似,就是将判断null放入注册窗口里面,并且不让从外部直接new新窗口,当然还有些细节要注意的
展开全部
这个就是所谓的 单例模式 你可以上网搜索一下
在你的登录界面中 建立一个private static 的类类型变量
我这里用的是Danli 作为类的名的
记住一个私有的构成方法 还一个私有的静态的类类型变量
再加上一个公共的返回值是类类型的方法就可以啦
在这个方法里面判断类类型是否为空 如果空就创建一个
如果不是空 就直接返回
public partial class Danli : Form
{
private static Danli mod = null;
private Danli()
{
InitializeComponent();
}
public static Danli GetInstance()
{
if (mod == null)
{
mod = new Danli();
}
return mod;
}
}
在你要调用的页面 就不能使用new的方法创建对象了 因为是static的
Danli danli = Danli.GetInstance();
danli.Show();
这样 你试试看
在你的登录界面中 建立一个private static 的类类型变量
我这里用的是Danli 作为类的名的
记住一个私有的构成方法 还一个私有的静态的类类型变量
再加上一个公共的返回值是类类型的方法就可以啦
在这个方法里面判断类类型是否为空 如果空就创建一个
如果不是空 就直接返回
public partial class Danli : Form
{
private static Danli mod = null;
private Danli()
{
InitializeComponent();
}
public static Danli GetInstance()
{
if (mod == null)
{
mod = new Danli();
}
return mod;
}
}
在你要调用的页面 就不能使用new的方法创建对象了 因为是static的
Danli danli = Danli.GetInstance();
danli.Show();
这样 你试试看
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
建议你
点击注册弹出窗体时加入代码this.Visible = false;隐藏登陆界面
注册窗口关闭时再把登陆界面显示出来 XXXX.Visible = true;
(XXXX为登陆界面窗口的代号)
点击注册弹出窗体时加入代码this.Visible = false;隐藏登陆界面
注册窗口关闭时再把登陆界面显示出来 XXXX.Visible = true;
(XXXX为登陆界面窗口的代号)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用ShowDialog()弹出窗口,别用show()。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询