| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3007 人关注过本帖
标题:[讨论]Windows程序中如何调用关闭事件?
只看楼主 加入收藏
marer
Rank: 2
等 级:新手上路
威 望:3
帖 子:928
专家分:0
注 册:2005-7-18
收藏
得分:0 
我所讲的不是解决误关窗体的功能,这样的话e.Cancel就可以解决,只是在用户点击了X后,要调用某些控件的数据,而此时某些控件已经被销毁了,根本用不了它们的数据。

public class 人生历程 extends Thread{public void run(){while(true){努力,努力,再努力!!;Thread.sleep(0);}}}
2006-08-11 15:20
炫舞鱼
Rank: 1
等 级:新手上路
帖 子:85
专家分:0
注 册:2006-5-16
收藏
得分:0 
你写在 _closed里看看

这个也是可以的
2006-08-11 15:21
marer
Rank: 2
等 级:新手上路
威 望:3
帖 子:928
专家分:0
注 册:2005-7-18
收藏
得分:0 
以下是引用monday4667在2006-8-11 15:17:34的发言:
我是这样做的第一种方法:
protected override void OnClosed(EventArgs e)//重写窗体关闭
{
//这里你添加你要在关闭前要做的事情

base.OnClosed(e);//这里是调用原来的关闭
}


第二种方法:
protected override void WndProc(ref Message m) //让窗体的关闭按钮无效
{
const int WM_SYSCOMMAND = 0x0112;
const int SC_CLOSE = 0xF060;
if (m.Msg == WM_SYSCOMMAND && (int) m.WParam == SC_CLOSE)
{
MessageBox.Show("用户点了关闭按纽了");//这里你可以加入自己要做的事情
return;
}
base.WndProc(ref m);
}

这两个方法也不行,无法实现


public class 人生历程 extends Thread{public void run(){while(true){努力,努力,再努力!!;Thread.sleep(0);}}}
2006-08-11 15:26
marer
Rank: 2
等 级:新手上路
威 望:3
帖 子:928
专家分:0
注 册:2005-7-18
收藏
得分:0 
上传个东西吧
上传个东西吧,当修改数据后,点击X按钮时看看是否可以提示保存?
HMAZal8J.rar (32.35 KB) [讨论]Windows程序中如何调用关闭事件?



public class 人生历程 extends Thread{public void run(){while(true){努力,努力,再努力!!;Thread.sleep(0);}}}
2006-08-11 15:27
monday4667
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2006-8-11
收藏
得分:0 
以下是引用marer在2006-8-11 15:20:46的发言:
我所讲的不是解决误关窗体的功能,这样的话e.Cancel就可以解决,只是在用户点击了X后,要调用某些控件的数据,而此时某些控件已经被销毁了,根本用不了它们的数据。

我刚解决了全局变量的问题 是不是可以先把数据放到全局变量里?


学习就象是装满石头的桶,以为满了却可以装沙 再之却还可以装水
2006-08-11 15:29
chenjin145
Rank: 1
等 级:禁止访问
帖 子:3922
专家分:0
注 册:2006-7-12
收藏
得分:0 
退出後提示保存應該是用個全局變量bool來判斷
沒有保存bool為false時
數據再存

closing時 class form中定義的對象並沒有被銷毀
只是局部域中的對象可能被銷毀了

[url=javascript:alert(1);] [div]fdgfdgfdg\" on\"[/div] [/url]
2006-08-11 15:50
marer
Rank: 2
等 级:新手上路
威 望:3
帖 子:928
专家分:0
注 册:2005-7-18
收藏
得分:0 
我也试过用bool值来判断,但是也不行,Closing事件触发后,bool值永远是false

public class 人生历程 extends Thread{public void run(){while(true){努力,努力,再努力!!;Thread.sleep(0);}}}
2006-08-11 17:01
marer
Rank: 2
等 级:新手上路
威 望:3
帖 子:928
专家分:0
注 册:2005-7-18
收藏
得分:0 
大家都来试一下,成功后把代码传上来

public class 人生历程 extends Thread{public void run(){while(true){努力,努力,再努力!!;Thread.sleep(0);}}}
2006-08-11 17:01
kyovcs
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2006-8-8
收藏
得分:0 
// Call this method from the constructor of your form
    private void OtherInitialize() {
       this.Closing += new CancelEventHandler(this.Form1_Closing);
       // Exchange commented line and note the difference.
       this.isDataSaved = true;
       //this.isDataSaved = false;
    }

    private void Form1_Closing(Object sender, CancelEventArgs e) {
       if (!isDataSaved) {
          e.Cancel = true;
          MessageBox.Show("You must save first.");
       }
       else {
          e.Cancel = false;
          MessageBox.Show("Goodbye.");
       }
    }
 


2006-08-11 20:57
xxxxx52
Rank: 4
等 级:贵宾
威 望:13
帖 子:689
专家分:0
注 册:2006-4-30
收藏
得分:0 
楼上正解

好的资料下载网站http:///in.asp?id=xuelion2006 嘿嘿帮点一下拉~
2006-08-14 15:31
快速回复:[讨论]Windows程序中如何调用关闭事件?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019306 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved