C#子窗体
public partial class mainForm1 : Form
{
public mainForm1()
{
InitializeComponent();
}
private void gy_Click(object sender, EventArgs e)
{
Help gy =new Help();//创建子窗体;
gy.MdiParent = this;//指定当前窗体为MDI父窗体;
gy.Show();//打开窗体
}
private void mainForm1_Load(object sender, EventArgs e)
{
}
}
打开两次会出现两个同样的对话框,我想只出现一个对话框,请问如何实现?
[解决办法]
public partial class mainForm1 : Form
{
public mainForm1()
{
InitializeComponent();
}
Help gy=null;
private void gy_Click(object sender, EventArgs e)
{
if(gy==null)
{
Help gy =new Help();//创建子窗体;
gy.MdiParent = this;//指定当前窗体为MDI父窗体;
gy.Show();//打开窗体
}
else
{
gy.Show();//打开窗体
}
}
private void mainForm1_Load(object sender, EventArgs e)
{
}
}
[解决办法]
- C# code
Help gy ;private void gy_Click(object sender, EventArgs e){ if(gy == null || gy.IsDisposed) { gy =new Help();//创建子窗体; gy.MdiParent = this;//指定当前窗体为MDI父窗体; gy.Show();//打开窗体 } else { gy.Active(); }}
[解决办法]
[解决办法]
public partial class mainForm1 : Form
{
public static Help gy;
public mainForm1()
{
InitializeComponent();
}
private void gy_Click(object sender, EventArgs e)
{
if(gy==null)
{
gy =new Help();//创建子窗体;
gy.MdiParent = this;//指定当前窗体为MDI父窗体;
gy.Show();//打开窗体
}
}
[解决办法]
记个标志,每次打开时能知道上次有没有打开就行.
[解决办法]
- C# code
public partial class mainForm1 : Form { public mainForm1() { InitializeComponent(); } Help gy=null; private void gy_Click(object sender, EventArgs e) { if(gy==null) { gy =new Help();//创建子窗体; gy.MdiParent = this;//指定当前窗体为MDI父窗体; gy.Show();//打开窗体 } else { gy.Show();//打开窗体 } } private void mainForm1_Load(object sender, EventArgs e) { } }
[解决办法]
- C# code
//判断子窗体是否打开 foreach (Form frm in Application.OpenForms) { if (frm.Name == "gy") { isOpened = true; frm.Activate(); break; } }
[解决办法]
最简单做法
- C# code
private void gy_Click(object sender, EventArgs e){ foreach (Form item in this.MdiChildren) { Help hf = item as Help; if (hf != null) { hf.Activate(); return; } } Help gy = new Help();//创建子窗体; gy.MdiParent = this;//指定当前窗体为MDI父窗体; gy.Show();//打开窗体}
------解决方案--------------------