在C#中如何判断一个窗体已经打开(点button后打开),如果再次点击button,直接激活已打开的窗体

 我来答
hanxinimm
2011-02-25 · 超过24用户采纳过TA的回答
知道答主
回答量:59
采纳率:0%
帮助的人:44.1万
展开全部
其实很简单的,对要判断的是否已经打开窗体添加一些代码就可以实现。
例如点击按钮,打开Form1
1.添加该代码到Form1类中
private static Form1 OnlyForm { get; set; }
public static void ShowForm()
{
if (OnlyForm == null)
{
Form1 Fm=new Form1();
OnlyForm = Fm;
Fm.Show();
}
OnlyForm.Activate();
}
修改Form1的 Dispose方法
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
if (OnlyForm != null)
{
OnlyForm = null;
}
base.Dispose(disposing);
}
3.在按钮的点击事件中直接使用 Form1的ShowForm静态方法。
例子:
private void button_Click(object sender, EventArgs e)
{
Form1.ShowForm();
}
如果有问题再问,谢谢

这是一种简单的设计模式,单实例模式~你可以去看下资料~
Online_Ghost
2011-02-25 · TA获得超过682个赞
知道小有建树答主
回答量:395
采纳率:33%
帮助的人:156万
展开全部
如果是父窗体子窗体的 可以这样 每次都关掉所有的子窗体然后新打开
private void 添加用户ToolStripMenuItem_Click(object sender, EventArgs e)//窗体工具栏上的图标的点击响应方法
{
for (int i = 0; i < this.MdiChildren.Length; i++)
{
this.MdiChildren[i].Close(); //关闭所有子窗体
}
this.tstFormIndex.Text = "用户管理--添加用户"; //修改父窗体状态栏
FormAddUser formAddUser = new FormAddUser(user);//打开想要打开的窗体作为子窗体
formAddUser.MdiParent = this;
formAddUser.Dock = DockStyle.Fill;
formAddUser.MaximizeBox = true;
formAddUser.Show(); //显示子窗体
}

参考资料: http://hi.baidu.com/online_ghost/blog/item/9a62b9c1571faa0a0ff4776f.html

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
c吐血C
2011-02-25 · TA获得超过132个赞
知道小有建树答主
回答量:299
采纳率:0%
帮助的人:120万
展开全部
最简单的方法,把那个窗体设置成全局变量。不要老是new就行了
更多追问追答
追问
给段代码行不啊?  我是新手
这段代码不行啊
if (frm.Visible ==false)
{
frm.Show();
}
追答
如果原先那个窗体被关闭了,就必须再show一个新的。而不会是visible==false
如果已经打开了而不是当前窗体,下边的就行了
if (frm.Visible == true)
{
frm.Focus();
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
重非之0X
2011-02-25 · TA获得超过656个赞
知道小有建树答主
回答量:731
采纳率:0%
帮助的人:179万
展开全部
gt;
加在<head><head>之间
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式