请教 c# winform如何判断窗体已show()相关问题

大惠蛋 2010-06-04 03:55:34
有两个窗体

a窗体里有个定时器,定时判断当条件成立时,如果b窗体已show就刷新b窗体,若没有show就show出b窗体

没有用MDI窗体
...全文
1801 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
稻庄 2010-06-04
  • 打赏
  • 举报
回复
2楼正解。
萨拉嘿 2010-06-04
  • 打赏
  • 举报
回复
联想到了单例模式。。。
「已注销」 2010-06-04
  • 打赏
  • 举报
回复
用模式窗体显示也可以
zw880322 2010-06-04
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 ly302 的回复:]
C#里判断窗体是否已经加载2009-08-19 19:03大家好 我是GIS理想 当我们做C#开发的时候 也就是说只要是应用程序开发的时候 有一个问题是要经常遇到的 就是当我们点击打开新窗口的问题 如何判断窗口已经打开了 因为如果不做判断的话 明显会出现问题 :每点击一次 就会加载一个相同的窗口 这个是不对的

一般我们打开一个新窗口是这样的:


C# code
Private v……
[/Quote]
那我还不如点击按钮的时候判断一下是否已经存在该窗体了

private void button1_Click(object sender ,EventArgs e){

FormCollection fc = Application.OpenForms;
if (fc[formname] != null)
{
(fc[formname] as Form).Show();
}
else
{
new ....
}}

coolcindy 2010-06-04
  • 打赏
  • 举报
回复
各位是否有对金融项目感兴趣的C#
任职资格:
- 本科或以上学历,计算机相关专业;
- 有两年以上软件开发工作经验
- 熟悉C#语言和Winform技术开发各种软件界面;
- 参与过多个具有一定规模的软件研发及实施项目,熟悉软件工程过程
- 具备面向对象分析与设计能力;
- 工作积极主动,具备较强的责任感且有优秀的分析,组织及技术指导能力;
- 较强的沟通能力,有一定管理协调能力;
- 有金融行业知识优先考虑。
薪资优越
有兴趣请联系coolwr@126.com
AKULAKK 2010-06-04
  • 打赏
  • 举报
回复
楼上正解。收藏下。
皇城龙三 2010-06-04
  • 打赏
  • 举报
回复
C#里判断窗体是否已经加载2009-08-19 19:03大家好 我是GIS理想 当我们做C#开发的时候 也就是说只要是应用程序开发的时候 有一个问题是要经常遇到的 就是当我们点击打开新窗口的问题 如何判断窗口已经打开了 因为如果不做判断的话 明显会出现问题 :每点击一次 就会加载一个相同的窗口 这个是不对的

一般我们打开一个新窗口是这样的:

Private void button_Click(object sender,EventArgs e)

{

Frm frm=new Frm();

Frm.show();

}
这个是经常要用到的 呵呵 尤其是我这样的新手 。。。。。。

很明显 这样每点击一次 都会出来一个新的Frm窗体的 那么怎么判断当前的窗体已经加载呢

方法一 用window api(没用这里过 不敢妄言)

方法二 先实例化一个窗体,然后在点击事件里让它显示 如下:

Frm frm= new Frm();
private void pictureBox2_Click(object sender, EventArgs e)
{

if (!frm.Created)
{
f = new Frm();
f.Show();
}
}


很明显 这个貌似能实现只出来一次 但是随之而来的问题是 事先就实例化了这个窗体 这在代码编写里是不好的习惯

要是有很多的窗体的话 加载程序的时候就很占系统资源了 所以这样的写法也不可取

方法三 声明一个窗体变量 然后动态的创建并显示

其实这个方法来自于第二个方法的思路 认真分析一下第二个方法可以看到 之所以不可取是因为在声明的时候直接实例化了 那么我们不实例化它 只声明一个窗体变量 不就行了么?

是的 例子代码如下:

//这句放在窗体的初始化的地方 不是点击事件里最佳addPlaceMark是窗体的name

private addPlaceMark addplacemark;

//下面的放在弹出窗体的点击事件里即可

if (addplacemark == null || addplacemark.IsDisposed)

{

addplacemark = new addPlaceMark();

addplacemark.Show();

}


else

{

addplacemark.WindowState = FormWindowState.Normal;

addplacemark.Activate();

addplacemark.Show();

}

捷哥1999 2010-06-04
  • 打赏
  • 举报
回复
在b窗体的load事件中触发一个事件,a窗体监听该事件,一旦b窗体show以后,a窗体就能够知道了。

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧