winform中实现不重复创建窗体

晚上有网友问了个问题,“通过button的click事件,实例化一个窗体,并show()。当我多次点击button时,会产生多个窗体。请问怎么解决这个问题?不想通过设置button的enable=false来解决这个问题。”其实这也算是一个比较实际的问题,有网友回答说可以使用模式窗体,呵呵,稍微想了下确实是可以解决问题。另一网友提出若不用模态框可否解决。我的第一反应就是加判断,随意回了句“先判断窗体是否存在。”。正好我刚创建了个新项目,打算随便写点小程序,于是试写下怎么判断。
我的做法是:起始窗口(frmMain)中加个按钮,添加一个新窗体,命名为frmTest(可选);在按钮单击事件中作判断,完整代码如下:

 

public partial class frmMain : Form
{
private frmTest frm = null;
public frmMain()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
if (frm == null || frm.IsDisposed)
{
frm = new frmTest();
frm.Show();
}
else
{
MessageBox.Show("Exists");
}
}
}

  

这样做基本是可以解决问题了。有网友建议不要提示窗体存在,直接将窗体显示出来就行了,因此将代码改为:

public partial class frmMain : Form
{
private frmTest frm = null;
public frmMain()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
if (frm == null || frm.IsDisposed)
{
frm = new frmTest();
}
frm.Show();
frm.Activate();
}
}

  

这样应该是搞定了。看了下代码很简单,没啥技术含量。固本文只作为个人日记记录,不是技术文章。留着以后看看自己当年是从一个什么级别的菜鸟过来的。

posted @ 2012-02-21 21:21  风情波涌  阅读(523)  评论(1编辑  收藏  举报