怎么在窗体关闭时,由于窗体中的数据没有完全保存而阻止窗体的关闭?

hdgqlyl 2012-05-13 11:57:48
在C#中,在窗体Form1关闭时,如果Form1中的数据没有完全保存,怎么阻止窗体Form1的关闭?在哪个事件下编写代码?
...全文
218 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2012-05-14
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

C# code

/// <summary>
/// 数据是否保存完成
/// </summary>
bool m_IsFinished = false;
/// <summary>
/// 数据是否保存完成
/// </summary>
public bool Is……
[/Quote]
这样不好,如果保存后再修改呢?IsFinished仍未true,除非还要监视修改,再把它设置为false,自找麻烦,何必呢?

直接在Form_Closing事件中判断数据是否修改就可以了,关键就是你自己要判断是否修改了数据。

xky96 2012-05-14
  • 打赏
  • 举报
回复
在事件处理方法中,如果要阻止窗体关闭,执行
e.Cancel = True;
xky96 2012-05-14
  • 打赏
  • 举报
回复
Form_Closing事件
ufo1199078 2012-05-14
  • 打赏
  • 举报
回复

/// <summary>
/// 数据是否保存完成
/// </summary>
bool m_IsFinished = false;
/// <summary>
/// 数据是否保存完成
/// </summary>
public bool IsFinished
{
get { return m_IsFinished; }
set
{
m_IsFinished = value;
if (m_IsFinished && IsFormClosed)//如果数据保存完成和窗体已经执行过关闭操作
{
this.Close();//自动关闭窗体
}
}
}

/// <summary>
/// 窗体是否执行过关闭
/// </summary>
bool IsFormClosed = false;

/// <summary>
/// 窗体关闭时发生(记得要加这个事件哦)
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Form_FormClosing(object sender, FormClosingEventArgs e)
{
IsFormClosed = true;//设置窗体已经执行过关闭
if (!IsFinished)//如果数据没有保存完成
{
e.Cancel = true;//取消关闭事件
}
}



当数据保存完成后设置属性 IsFinished = true;
灵雨飘零 2012-05-14
  • 打赏
  • 举报
回复
bool IsFinished=false;//数据没有保存完毕

数据保存方法
{

bool IsFinished=true;//保存完毕

。。。。


bool IsFinished=false;//数据没有保存完毕

}


private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
{
if (IsFinished == false)
e.Cancel = true;
}
  • 打赏
  • 举报
回复
关键是看你怎么判断数据有没有保存完毕吧
Change_L 2012-05-14
  • 打赏
  • 举报
回复
private void MainFrom_FormClosing(object sender, FormClosingEventArgs e)
{
if (DialogResult.No == MessageBox.Show("是否退出当前程序?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information))
{
e.Cancel = true;
}
else
{
e.Cancel = false;
}
}

private void MainFrom_FormClosed(object sender, FormClosedEventArgs e)
{
Application.Exit();
}
xlmwy 2012-05-14
  • 打赏
  • 举报
回复
private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
{
DialogResult drClose = MessageBox.Show("您确认退出吗?", "退出系统提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1);
if (drClose == DialogResult.Cancel)
e.Cancel = true;
}
ufo1199078 2012-05-14
  • 打赏
  • 举报
回复
这样是关闭的时候如果没保存完成会等待,如果保存完成会自动关闭!

楼主应该意思是,当关闭窗体的时候,如果没有完全保存的时候等待保存完毕。

111,126

社区成员

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

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

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