winform 记事本 关闭前保存问题(请教高手)

林海 2009-12-16 08:26:02
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (textBox1.Text == string.Empty)
{
return;
}
else if (!saved)
{
DialogResult dr = MessageBox.Show("文件内容已经改变,是否保存", "记事本", MessageBoxButtons.YesNoCancel);
if (dr == DialogResult.Cancel)
{
e.Cancel = true;
}
else if (dr == DialogResult.No)
{
Close();
}
else
{
SaveFileDialog s = new SaveFileDialog();
s.CheckFileExists = true;
s.DefaultExt = "txt";
s.Filter = "文本文件|*.txt";
DialogResult drs = new DialogResult();
if (drs == DialogResult.OK)
{
StreamWriter sw = new StreamWriter(s.Filter);
sw.WriteLine(textBox1.Text);
sw.Close();
Close();
}

}
}

记事本内有内容且没有保存,所以关闭前弹出提示框,可是在点是的时候就直接关闭了,其他效果都好的,不知道为什么?
...全文
132 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
林海 2009-12-16
  • 打赏
  • 举报
回复
什么原因呢,我刚开始学c#,呵呵
林海 2009-12-16
  • 打赏
  • 举报
回复
四楼和五楼是对的,谢谢大家,问题解决了
zhujiazhi 2009-12-16
  • 打赏
  • 举报
回复
else
{
SaveFileDialog s = new SaveFileDialog();
s.CheckFileExists = true;
s.DefaultExt = "txt";
s.Filter = "文本文件|*.txt";
//DialogResult drs = new DialogResult();
DialogResult drs = s.ShowDialog();

if (drs == DialogResult.OK)
{
StreamWriter sw = new StreamWriter(s.Filter);
sw.WriteLine(textBox1.Text);
sw.Close();
Close();
}

}
zhujiazhi 2009-12-16
  • 打赏
  • 举报
回复
DialogResult drs = s.ShowDialog();
  • 打赏
  • 举报
回复
看下你这两行:
DialogResult drs = new DialogResult();
if (drs == DialogResult.OK)
在上面行设置一个断点,看一下drs的值是什么,你就明白了
wuyq11 2009-12-16
  • 打赏
  • 举报
回复
private void frmMain_FormClosing(object sender, FormClosingEventArgs e)
{
if(MessageBox.Show(this, "是否退出系统?","系统", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == DialogResult.No)
{
e.Cancel = true;
}
}

protected override void WndProc(ref Message m)
itrefer 2009-12-16
  • 打赏
  • 举报
回复
FormClosed事件中写代码

111,120

社区成员

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

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

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