| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3007 人关注过本帖
标题:[讨论]Windows程序中如何调用关闭事件?
只看楼主 加入收藏
marer
Rank: 2
等 级:新手上路
威 望:3
帖 子:928
专家分:0
注 册:2005-7-18
收藏
 问题点数:0 回复次数:49 
[讨论]Windows程序中如何调用关闭事件?
讨论一下,在Windows程序中如何在点击窗体上的X按钮在关闭窗体前查看是否用户对窗体上的DataGrid中的数据进行了修改,如果已修改则提示保存,否则直接关闭?注意:不是点击自己做的“关闭”按钮,而是点击窗体上的X按钮。

我写了个代码,但好像没有实现功能:

private DataTable dt=new DataTable();

private void Form1_Closing(object sender,........)
{
DataRow[] rr=dt.Select("","",DataViewRowState.ModifiedCurrent);
if(rr==null || rr.Length<=0)
{
return;
}
if(MessageBox.Show("您有"+rr.Length.ToString()+"条数据已修改,是否保存?","提示",MessageBoxButtons.YesNo,MessageBoxIcon.Question)==DialogResult.Yes)
{
SqlConnection con=new SqlConnection(.........);
SqlCommand cmd=new SqlCommand();
cmd.Connection=con;
cmd.CommandText="update Test set [ID]=@newid,[Name]=@newname,Sex=@newsex where [ID]=@oldid and [Name]=@oldname and Sex=@oldsex";
cmd.Parameters.Add("@newid",SqlDbType.VarChar,10,"ID");
cmd.Parameters.Add("@newname",SqlDbType.VarChar,10,"Name");
cmd.Parameters.Add("@newsex",SqlDbType.Char,2,"Sex");
SqlParameter para=cmd.Parameters.Add("@oldid",SqlDbType.VarChar,10,"ID");
para.SourceVersion=DataRowVersion.Original;
para=cmd.Parameters.Add("@oldname",SqlDbType.VarChar,10,"Name");
para.SourceVersion=DataRowVersion.Original;
para=cmd.Parameters.Add("@oldsex",SqlDbType.Char,2,"Sex");
para.SourceVersion=DataRowVersion.Original;
SqlDataAdapter da=new SqlDataAdapter();
da.UpdateCommand=cmd;
try
{
da.Update(rr);
}
catch(SqlException er)
{
MessageBox.Show(er.Message);
}
}
}
搜索更多相关主题的帖子: Windows程序 窗体 按钮 
2006-08-09 00:37
chenjin145
Rank: 1
等 级:禁止访问
帖 子:3922
专家分:0
注 册:2006-7-12
收藏
得分:0 
cancelevengargs事件添到closing中

[url=javascript:alert(1);] [div]fdgfdgfdg\" on\"[/div] [/url]
2006-08-09 10:13
marer
Rank: 2
等 级:新手上路
威 望:3
帖 子:928
专家分:0
注 册:2005-7-18
收藏
得分:0 
别光说,拿个代码来看看

public class 人生历程 extends Thread{public void run(){while(true){努力,努力,再努力!!;Thread.sleep(0);}}}
2006-08-09 12:23
chenjin145
Rank: 1
等 级:禁止访问
帖 子:3922
专家分:0
注 册:2006-7-12
收藏
得分:0 
[CODE]
this.Closing+=new CancelEventHandler(CloseCancel);

private void CloseCancel(object sender,CancelEventArgs e)
{
//判斷修改
e.Cancel=true;
}
[/CODE]

你的語氣缺乏禮貌

[url=javascript:alert(1);] [div]fdgfdgfdg\" on\"[/div] [/url]
2006-08-09 12:54
xxxxx52
Rank: 4
等 级:贵宾
威 望:13
帖 子:689
专家分:0
注 册:2006-4-30
收藏
得分:0 
呵呵

好的资料下载网站http:///in.asp?id=xuelion2006 嘿嘿帮点一下拉~
2006-08-09 13:38
marer
Rank: 2
等 级:新手上路
威 望:3
帖 子:928
专家分:0
注 册:2005-7-18
收藏
得分:0 
以下是引用chenjin145在2006-8-9 12:54:00的发言:
[CODE]
this.Closing+=new CancelEventHandler(CloseCancel);

private void CloseCancel(object sender,CancelEventArgs e)
{
//判斷修改
e.Cancel=true;
}
[/CODE]

你的語氣缺乏禮貌

我一猜就会有人写这个代码,这么简单可以解决,还用拿到上面来讨论吗?自己做个工程来试试啊,这个不行的


public class 人生历程 extends Thread{public void run(){while(true){努力,努力,再努力!!;Thread.sleep(0);}}}
2006-08-10 17:28
jockey
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:977
专家分:52
注 册:2005-12-4
收藏
得分:0 
顺便问问:

怎么防止误关闭窗体?(点右上角叉时,退出时有个MessageBox判断一下是否确定退出?)

2006-08-10 17:46
chenjin145
Rank: 1
等 级:禁止访问
帖 子:3922
专家分:0
注 册:2006-7-12
收藏
得分:0 
以下是引用marer在2006-8-10 17:28:36的发言:

我一猜就会有人写这个代码,这么简单可以解决,还用拿到上面来讨论吗?自己做个工程来试试啊,这个不行的

不知道你怎麼猜的
如果你用過,應該知道它的功能
我懷疑你根本都不了解.net的消息處理機制

事實就是,這個簡單的東西解決了你說點x誤關窗體的深奧的問題


[url=javascript:alert(1);] [div]fdgfdgfdg\" on\"[/div] [/url]
2006-08-11 08:49
jockey
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:977
专家分:52
注 册:2005-12-4
收藏
得分:0 
在closing事件里,
if(MessageBox.Show ("你确认需要退出吗?","提示",MessageBoxButtons.YesNo,MessageBoxIcon.Question)==DialogResult.No)
{
e.Cancel=true;
}

想退出的时候,close(),Application.Exit();都可以

closing事件?主窗体找不到这个事件啊!

2006-08-11 09:22
炫舞鱼
Rank: 1
等 级:新手上路
帖 子:85
专家分:0
注 册:2006-5-16
收藏
得分:0 
可以的
closing 这事件可以通过选择出来的
还有很多关于窗体的事件 这里面都有
我挺崇拜chenjin145的 呵呵~:)
感觉他什么都会 太强 了
2006-08-11 09:31
快速回复:[讨论]Windows程序中如何调用关闭事件?
数据加载中...
 
   



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

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