图书管理系统主窗口中的已经打开子窗口怎么做到不重复但是点击前置 2种思路,看你喜欢1.不管是否已经打开,都打开个新的,同时判断如果有旧的,关掉2.判断已经打开了,那么执行下form.Active让它获得焦点,同时设置下最大化 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 frmAdd.MdiParent = this; 我感觉这个多余滴!为什么要设父窗体?你那遍历 没搞懂你要干嘛?是要判断是否打开过某个窗体码?给一段我的代码://主窗体里 public Login login = null; //Login 子窗体名=== frmRecordCapital //登录 private void btnLogin_Click(object sender, EventArgs e) { if (login == null) { login = new Login(this); login.ShowDialog(); //阻态框显示 //也可以直接 login.Show(); } }//子窗体里 Form1 frm1 = new Form1(); //也可以不new #endregion public Login(Form1 frm) //构造函数里 加 Form1 frm { frm1 = frm; //这个必须有 InitializeComponent(); FormClosing += new FormClosingEventHandler(Login_FormClosing); // } private void Login_FormClosing(object sender, FormClosingEventArgs e) { frm1.login = null; // }//就这样解决了你上面所有问题 //代码直接复制可用 #endregion 这符号忘记去掉了 在它上面加个 #region 也行 这就用到单例模式了类最好只负责他自己的事情,显然是否已存在是弹出的子窗口自己的事情 public partial class FrmAdd : Form { private static FrmAdd form; public static FrmAdd CreateForm() { if (form == null || form.IsDisposed) form = new FrmAdd(); form.Activate(); return form; } private FrmAdd()//私有化构造方法,确保外部无法随意实例化 { InitializeComponent(); } }那么调用: private void button1_Click(object sender, EventArgs e) { FrmAdd form = FrmAdd.CreateForm(); form.MdiParent = this; form.Show(); }随便执行多少次都只会有一个FrmAdd实例 frmAdd.Activate();->frm.Activate(); 高手帮我一下,关于下载时的进度条的调试 C#关于开发工具的使用 List<T>的初始化 如何将多个水晶报表的内容一起导出到指定文件夹下的指定文件类型? 如何通过dataview来实现检索部分列 对二进制数组进行压缩? 如何合并两个DataTable? 如何让光标在屏幕上的状态都是等待状态? 急急急!!!!!!!!!!11!一个关于报表的问题 用C#编程实现DTS包动态创建和保存???!!!! 关于文图混合的内容存储到SQL SERVER里,求助!! 文档管理器如何实现?
给一段我的代码://主窗体里
public Login login = null; //Login 子窗体名=== frmRecordCapital
//登录
private void btnLogin_Click(object sender, EventArgs e)
{
if (login == null)
{
login = new Login(this);
login.ShowDialog(); //阻态框显示 //也可以直接 login.Show();
}
}
//子窗体里
Form1 frm1 = new Form1(); //也可以不new
#endregion
public Login(Form1 frm) //构造函数里 加 Form1 frm
{
frm1 = frm; //这个必须有
InitializeComponent();
FormClosing += new FormClosingEventHandler(Login_FormClosing); //
}
private void Login_FormClosing(object sender, FormClosingEventArgs e)
{
frm1.login = null; //
}//就这样解决了你上面所有问题 //代码直接复制可用
类最好只负责他自己的事情,显然是否已存在是弹出的子窗口自己的事情
public partial class FrmAdd : Form
{
private static FrmAdd form; public static FrmAdd CreateForm()
{
if (form == null || form.IsDisposed)
form = new FrmAdd();
form.Activate();
return form;
}
private FrmAdd()//私有化构造方法,确保外部无法随意实例化
{
InitializeComponent();
}
}那么调用:
private void button1_Click(object sender, EventArgs e)
{
FrmAdd form = FrmAdd.CreateForm();
form.MdiParent = this;
form.Show();
}
随便执行多少次都只会有一个FrmAdd实例
->
frm.Activate();