private frmMain m_frm=new frmMain();//----
m_frm.show();
//in frmMainprivate void button1_Click(object sender, System.EventArgs e)
{
this.Hide();
}
private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
e.Cancel = true;
}
m_frm.show();
//in frmMainprivate void button1_Click(object sender, System.EventArgs e)
{
this.Hide();
}
private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
e.Cancel = true;
}
{
if(about == null)//保证about只有一个实例
{
about = new Form2();
about = null; }
}
Get
If m_vb6FormDefInstance Is Nothing OrElse _
m_vb6FormDefInstance.IsDisposed Then '判断窗体实例是否存在
m_vb6FormDefInstance = New FrmMain
End If
DefInstance = m_vb6FormDefInstance
End Get
Set(ByVal Value As FrmMain)
m_vb6FormDefInstance = Value
End Set
End Property
这是我在VB中看到的实现,是在要显示的窗体中增加一个静态属性,然后直接调用这个静态属性显示就可以了。我不知道如何在C#中转换。
{
frmMain frm=new frmMain();
}
frm.show();
private void button1_Click(object sender, System.EventArgs e)
{
foreach ( Form f in this.OwnedForms )
{
if (f is Form2)
{
f.Show();
f.Focus();
return;
}
}
//need a new one
Form2 f2 = new Form2();
this.AddOwnedForm(f2);
f2.Owner = this;
f2.Show();
}
public class Form2 : System.Windows.Forms.Form
{
private System.Windows.Forms.Label label1;
public Form Owner;
.......
.......
private void Form2_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
Owner.RemoveOwnedForm(this);
}
}
foreach(Form form in this.MdiChild)
{
if(form is ChildForm)
{
childForm=(ChildForm)form;
break;
}
}
if(childForm==null)
{
childForm=new ChildForm();
childForm.parent=this;
childForm.show();
}
else
{
childForm.active();
}
把frmMain frm
放在方法外面,类开始的地方.
在方法里面这么写:
if(frm==null)
{
frm=new frmMain();
frm.show();
}
else
{
frm.A....(焦点那个,我忘了!)=ture;
}一切搞定!