关于Winform如何在父窗体里面只能打开一个子窗体 高手求解。老师讲课不讲,让我们自己百度,求解。谢谢,我QQ66610997 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我们老师说那个是什么单子模式、、讲过一次 我也不怎么记得了 不过我自己想了一个办法(我自己的办法 或许不怎么好)public partial class Form1 : Form { Form2 F2;//创建一个全局的Form2 public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { try { F2.Show();//调用F2的show方法 F2.Focus();//然后使他获得焦点 } catch {//如果出现异常 表明创建的全局Form2已经关闭了(打开后关闭了 被释放) F2 = new Form2();//那个就在创建一个Form2 赋值给F2 F2.Show();//启用show } } } #region MDI子窗体实例化一次 /// <summary> /// 名称:CheckChildOpenState /// 功能:用子窗体的Name进行判断是否已实例化,如果存在则将他激活 /// </summary> /// <param name="MdiForm">容器窗体</param> /// <param name="ChildForm">子窗体</param> public static void CheckChildOpenState(Form MdiForm, Form ChildForm) { foreach (Form tempChildForm in MdiForm.MdiChildren) { if (tempChildForm.Name == ChildForm.Name.ToString()) { if (tempChildForm.WindowState == FormWindowState.Minimized) { tempChildForm.WindowState = FormWindowState.Normal; } tempChildForm.Activate(); return; } } ChildForm.MdiParent = MdiForm; ChildForm.Show(); } #endregion //检查窗口是否已打开 private bool HaveOpened( string FormName) { bool bOpened = false; for (int i = 0; i < this.MdiChildren.Length; i++) { if (this.MdiChildren[i].Name == FormName) { this.MdiChildren[i].Show(); this.MdiChildren[i].BringToFront(); bOpened = true; break; } } return bOpened ; } //把这段放进打开窗体的方法中 if (HaveOpened("frm0604") == false) { frm0604 frmObj = new frm0604(); frmObj.MdiParent = this; frmObj.WindowState = FormWindowState.Maximized; frmObj.Show(); frmObj.BringToFront(); } 单例模式;class Form1:Form{ private Form1(){ InitializeComponent();}private static Form1 form1;public Form1 GetInstance(){if(form1 == null || form1.IsDisposed) form1 = new Form1();return form1;}} 程序退出后,进程仍然在运行 C#发UDP包判断机器是已经断开连接 小妹请教公钥、私钥如何生成问题。 c#有没有 DateTime.DayofYear 的反函数的啊? 知道是一年中的第几天,求出日期! DataGridView 如何把最第一列去掉 ???? 如何获得datagrid 列标题的宽度! vb.net的代码怎么转成C#? 请教各位兄弟 为什么这个.net反编译在我的win2003不能用,单位的win2003可以用 有这个东西吗?关于 PrintableForm 问一个WindowForm的问题 关于QQ是怎么判断在一机器是不是重复登录的问题 MVC删除 问题
{
Form2 F2;//创建一个全局的Form2
public Form1()
{
InitializeComponent();
} private void button1_Click(object sender, EventArgs e)
{
try {
F2.Show();//调用F2的show方法
F2.Focus();//然后使他获得焦点
} catch {//如果出现异常 表明创建的全局Form2已经关闭了(打开后关闭了 被释放)
F2 = new Form2();//那个就在创建一个Form2 赋值给F2
F2.Show();//启用show
}
}
}
#region MDI子窗体实例化一次
/// <summary>
/// 名称:CheckChildOpenState
/// 功能:用子窗体的Name进行判断是否已实例化,如果存在则将他激活
/// </summary>
/// <param name="MdiForm">容器窗体</param>
/// <param name="ChildForm">子窗体</param>
public static void CheckChildOpenState(Form MdiForm, Form ChildForm)
{
foreach (Form tempChildForm in MdiForm.MdiChildren)
{
if (tempChildForm.Name == ChildForm.Name.ToString())
{
if (tempChildForm.WindowState == FormWindowState.Minimized)
{
tempChildForm.WindowState = FormWindowState.Normal;
}
tempChildForm.Activate();
return;
}
}
ChildForm.MdiParent = MdiForm;
ChildForm.Show();
}
#endregion
//检查窗口是否已打开
private bool HaveOpened( string FormName)
{
bool bOpened = false; for (int i = 0; i < this.MdiChildren.Length; i++)
{
if (this.MdiChildren[i].Name == FormName)
{
this.MdiChildren[i].Show();
this.MdiChildren[i].BringToFront();
bOpened = true;
break;
}
}
return bOpened ;
} //把这段放进打开窗体的方法中
if (HaveOpened("frm0604") == false)
{
frm0604 frmObj = new frm0604();
frmObj.MdiParent = this;
frmObj.WindowState = FormWindowState.Maximized;
frmObj.Show();
frmObj.BringToFront();
}
class Form1:Form
{
private Form1()
{
InitializeComponent();
}
private static Form1 form1;public Form1 GetInstance()
{
if(form1 == null || form1.IsDisposed)
form1 = new Form1();
return form1;
}
}