窗体关闭提示保存! 一个winform 窗体里放一个DataGridView 如果DataGridView 内容有改变 关闭窗体的时候提示未保存!(windows记事本那样的效果) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e) { if (e.CloseReason == CloseReason.UserClosing) { if (DialogResult.Yes == MessageBox.Show("确定要退出本系统吗?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Warning)) { Application.Exit(); } else e.Cancel = true; }} 1.定义一个页面级变量bool isSaved记录窗体控件值是否保存.2.在窗体关闭时事件中写如下代码.private void Form1_FormClosing(object sender, FormClosingEventArgs e){ if (isSaved == false) { DialogResult dlgRe = MessageBox.Show("文件未保存,是否保存?", "保存提示", MessageBoxButtons.YesNoCancel); if (dlgRe == DialogResult.Yes) { //调用保存代码.执行完后继续自动关闭. } else if (dlgRe == DialogResult.Cancel) { e.Cancel = true; //取消关闭 } else //dlgRe == DialogResult.No { //无需写代码,自动关闭. } }} void Form1_Closing用它好点。 怎么判断DataGridView 内容是否改变了? CellEndEdit 事件 DataGridView 自带的事件 属性窗口双击 然后写代码按照你的要求 设置一个 bool isEdit = false;在 CellEndEdit 事件里 放一句代码 isEdit = true;或者判断 修改前的值 与现在的值 是否相等 相等则什么都不做 不等就 isEdit = true;这个具体要看你自己设置最后就是 close 的时候判断下 isEdit 问他保存不,,,当然 保存的时候你要设置下 isEdit = false;要不然 人家明明保存了你还问人家保存不 sample I wrotepublic class TestForm : Form{ private bool dataChanged = false; public DataGridView dgv = new DataGridView(); protected override void OnLoad(EventArgs e) { base.OnLoad(e); this.Controls.Add(dgv); dgv.Show(); dgv.CellValueChanged += (DataGridViewCellEventHandler)delegate { dataChanged = true; };//修改时记录 this.FormClosing += new FormClosingEventHandler(TestForm_FormClosing); } void TestForm_FormClosing(object sender, FormClosingEventArgs e) { if (e.CloseReason == CloseReason.UserClosing && dataChanged) { DialogResult res = MessageBox.Show("数据发生改变,是否保存?", "提醒", MessageBoxButtons.YesNoCancel); switch (res) { case DialogResult.Yes: //保存,允许关闭。 break; case DialogResult.No: //不保存,但依然允许关闭。 break; case DialogResult.Cancel: //阻止继续关闭窗体 e.Cancel = true; break; } } } } DataGridView 的CellValueChanged 事件中给isSaved =false 定义一个全局变量 bool型 bool change=False; private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e) { change=True; }再窗体关闭事件里判断change 并保存 DataGridView。里面记住是否该表状态 Datalist问题 绑定DataGridView问题(在线等) 初学C# 问题集合<1> 请教一个关于C#加载第三方组件问题 如何把彩色图片转化成16位灰度图片 精疲力尽!求救! 关于ASP.net C#调用VB的ActiveX DLL 新手请教:从数据集写入文本文件时遇到的问题 禁止一个类被实例化是不是这样做? 如何依次取得DeFen字段的值,并赋予别的变量 c#里EventHandle的用法问题 有没有好用的验证码识别的类? 想用C#登录网页,自动搜索页面上的元素,请给个方向或例子。谢谢。
{
if (e.CloseReason == CloseReason.UserClosing)
{
if (DialogResult.Yes == MessageBox.Show("确定要退出本系统吗?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Warning))
{
Application.Exit();
}
else
e.Cancel = true;
}}
1.定义一个页面级变量bool isSaved记录窗体控件值是否保存.
2.在窗体关闭时事件中写如下代码.
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (isSaved == false)
{
DialogResult dlgRe = MessageBox.Show("文件未保存,是否保存?", "保存提示", MessageBoxButtons.YesNoCancel);
if (dlgRe == DialogResult.Yes)
{
//调用保存代码.执行完后继续自动关闭.
}
else if (dlgRe == DialogResult.Cancel)
{
e.Cancel = true; //取消关闭
}
else //dlgRe == DialogResult.No
{
//无需写代码,自动关闭.
}
}
}
在 CellEndEdit 事件里 放一句代码 isEdit = true;
或者判断 修改前的值 与现在的值 是否相等 相等则什么都不做 不等就 isEdit = true;
这个具体要看你自己设置
最后就是 close 的时候判断下 isEdit 问他保存不,,,当然 保存的时候你要设置下 isEdit = false;要不然 人家明明保存了你还问人家保存不
{
private bool dataChanged = false;
public DataGridView dgv = new DataGridView();
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
this.Controls.Add(dgv);
dgv.Show();
dgv.CellValueChanged += (DataGridViewCellEventHandler)delegate { dataChanged = true; };//修改时记录
this.FormClosing += new FormClosingEventHandler(TestForm_FormClosing);
} void TestForm_FormClosing(object sender, FormClosingEventArgs e)
{
if (e.CloseReason == CloseReason.UserClosing && dataChanged)
{
DialogResult res = MessageBox.Show("数据发生改变,是否保存?", "提醒", MessageBoxButtons.YesNoCancel);
switch (res)
{
case DialogResult.Yes:
//保存,允许关闭。
break;
case DialogResult.No:
//不保存,但依然允许关闭。
break;
case DialogResult.Cancel:
//阻止继续关闭窗体
e.Cancel = true;
break;
}
}
}
}
DataGridView 的CellValueChanged 事件中
给isSaved =false
bool change=False;
private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
change=True;
}再窗体关闭事件里判断change 并保存