有关winForm程序中弹出画面的问题 大家好,好久没来了,以前一直做web程序的开发,现在开始做win程序的开发,还真有点不适应。问大家一个菜鸟的问题,从一个画面迁移到另一个画面(通过show()方法),当我在点击按钮的时候,如果已经打开了这个画面,怎么判断它已经被打开了,不再打开一个相同的画面。说得有点绕嘴,大家别见笑。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这个情况有很多种,比如新画面窗口是旧窗口的一个字段,还是在点击按钮时生成的一个局部变量?不同情况处理方式就不一样了,不太好说。那么你说具体一点吧,你的实际问题是什么?(如果是如下情况:这个新窗口你要经常使用,但常常被用户关闭掉,当用户点击某一按钮时会Show(而不是ShowDialog)该新窗口,但用户在未关闭新窗口时又去点击按钮就会重复地出现多个新窗口,那么:1,将该新窗口作为字段使用而不是局部变量 2,override新窗口的Dispose(bool)方法,将其改为Hide) 像你这种情况就属于在按钮事件里new的窗体对象,也就是每点一下按钮就新生成了一个窗体,如果你不想用Dialog的方式的话,那你就在按钮事件外面new,在事件内show() 設置全局靜態的bool變量打開的時候先判斷一下 在事件外面实例化一个窗体类,感觉好像有点不好,会不会对程序造成一些负面的影响。刚才我也想到了,在外面定义一个静态的变量,在每次show的时候判断以下,这时候又出现一个新问题,如果被show出的画面已经存在,如何让他显示在前台(这时候它出于最小化状态),并且还要把我操作的画面的一些数据传过去 传过去的数据是用来更新被show出的画面用的 用 ShowDialog这样只能出一个窗口 是呀,但我用的不是shoeDilog方法,如果是的话就不会有这些问题了,现在倒是能够判断出只谈出一个画面,但是怎么才能让它显示到最前面来呢,一点头绪都没有,郁闷中。 用hashtable存起来form =HT["Form1"];if (form is null||form.disposed()){form=new Form1();HT["Form1"]=form;}form.show(); 好的,搞定了,如果已经弹出了这个画面,在else分支中通过调用Foem的Activate方法,可以让它显示到前面来。 还是不明白怎么显示到前面 你没有form的实例 怎么用Activate方法? 求windowsform大神。。。。。在线等待!! winform 该如何将查询得到的多个字段赋值到combobox中 如何在二分法查找结果中输出和所要查找的最接近的数 [高分提问] 在服务应用程序中,如何每隔 1 天触发一次事件 学.net有必要学习Windows API吗? 深度复制是什么? 请大虾帮忙 还是问关于 大量数据写本地ACCESS效率的问题 【求救...】c# SOCKET多线程方面的问题 c#采用ODAC链接ORACLE11g数据库 如何降低进程占用CPU率? 如果将png格式图形变灰显示
(如果是如下情况:这个新窗口你要经常使用,但常常被用户关闭掉,当用户点击某一按钮时会Show(而不是ShowDialog)该新窗口,但用户在未关闭新窗口时又去点击按钮就会重复地出现多个新窗口,那么:1,将该新窗口作为字段使用而不是局部变量 2,override新窗口的Dispose(bool)方法,将其改为Hide)
打開的時候先判斷一下
if (form is null||form.disposed())
{
form=new Form1();
HT["Form1"]=form;
}
form.show();