做了一个主窗口FormMain
做了二个子窗口Form1和Form2
想调用Form1,调用的时候如果Form1已经创建,则显示它,不要重新创建一个Form1窗口,怎么实现?我在实现的时候的代码:
private void fundToolStripMenuItem_Click(object sender, EventArgs e)
{
Form1 frm1 = new Form1();
frm1.MdiParent = this;
frm1.Show();
}
每次调用都重复创建一模一样的Form1,郁闷啊,请高手指点!
做了二个子窗口Form1和Form2
想调用Form1,调用的时候如果Form1已经创建,则显示它,不要重新创建一个Form1窗口,怎么实现?我在实现的时候的代码:
private void fundToolStripMenuItem_Click(object sender, EventArgs e)
{
Form1 frm1 = new Form1();
frm1.MdiParent = this;
frm1.Show();
}
每次调用都重复创建一模一样的Form1,郁闷啊,请高手指点!
解决方案 »
- C#我想在按钮添原有属性的基础上多加属性,该怎么弄?
- vs2010用c#开发应用程序,设置菜单和窗体风格为类似office2007的风格。
- 怎样设置暂停、停止
- 各位大大,谁有过用microsoft word 11 .0 Object Library com组件生成有一定格式的word文档的经验?
- 【请问】.net里面有没有类似java的applet的那种东西
- 问一个很简单的问题:call B method in A?如何翻译,选择题
- 如何调这个DLL,是个读卡器的,已发过两次,一直未解决,共130分,最好有代码示例,多谢!
- 怎样定义DataGrid个列的宽度?我试了一下的方法
- 菜鸟刚学C#问两个问题
- 菜鸟问题
- 新手提问xml取值问题
- .net 的消息处理问题
Form1 frm1 = 实例,
这样就行了
class Form form1
{
private static form1 m_instance;
private form1()
{
//TODO...
}
public static Form getInstance()
{
if (m_instance == null)
{
m_instance = new form1();
}
return m_instance;
}
}private void fundToolStripMenuItem_Click(object sender, EventArgs e)
{
Form1 frm1 = Form1.getInstance();
frm1.MdiParent = this;
frm1.Show();
} 下面说一下你的代码的问题。
这里应该不适合使用单例模式,因为在frm1.Show();后面应该写上frm1.Dispose();即frm1被关闭后应该释放而不是保留在内存中。
{
foreach (Form childFrm in this.MdiChildren)
{
if (childFrm.Name == childFrmName)
{
if (childFrm.WindowState == FormWindowState.Minimized)
{
childFrm.WindowState = FormWindowState.Normal;
}
childFrm.Activate();
return true;
}
}
return false;
}private void fundToolStripMenuItem_Click(object sender, EventArgs e)
{
if (this.checkChildFrmExist("Form1"))
{
return;
}
Form1 frm1 = new Form1();
frm1.MdiParent = this;
frm1.Show();
}
做了一个子窗口FormFund
想调用FormFund,调用的时候如果FormFund已经创建,则显示它,不要重新创建一个FormFund窗口,实现如下,看看有没有什么不妥的地方?
我试了几下没有报错。 public partial class FormMain : Form
{
public FormMain()
{
InitializeComponent();
} private void fundToolStripMenuItem_Click(object sender, EventArgs e)
{
FormFund frmFund = FormFund.getInstance();
frmFund.MdiParent = this;
frmFund.Show();
}
} public partial class FormFund : Form
{
static public FormFund m_instance = null;
public FormFund()
{
InitializeComponent();
} public static FormFund getInstance()
{
if (m_instance == null)
{
m_instance = new FormFund();
}
return m_instance;
} private void FormFund_FormClosed(object sender, FormClosedEventArgs e)
{
m_instance = null; //关闭子窗口FormFund后要把m_instance置空,否则报错,???
} }