c# 关闭窗口提示保存

做了个记事本 但是窗口关闭时不提示是否保存 代码如下
bool s==false是指未保存
bool b==ture是指从磁盘读入

private void frmNotepad_FormClosing(object sender, FormClosingEventArgs e)
{
if (s == false)
{
string result;
result = MessageBox.Show("文件尚未保存,是否保存?",
"保存文件", MessageBoxButtons.YesNoCancel).ToString();
switch (result)
{
case "Yes":
if (b == true)
{
rtxtNotepad.SaveFile(odlgNotepad.FileName);
}
else if (sdlgNotepad.ShowDialog() == DialogResult.OK)
{
rtxtNotepad.SaveFile(sdlgNotepad.FileName);
}
rtxtNotepad.Text = "";
break;
case "No":
break;
}

Application.Exit();
}
else
{
Application.Exit();
}
}

这段代码错了嘛?还是别的代码问题?

呵呵。。当然错了喔。。比如一个按钮提示关闭窗口的:代码如下
DialogResult mess=MessageBox.Show("文件尚未保存,是否保存?",
"保存文件", MessageBoxButtons.YesNoCancel);
if (mess == DialogResult.OK)
{
this.Close();
}
else
{
//调用保存文件的方法
}
消息框的按钮消息是用DialogResult 接收的。。其他的么什么问题。。希望给你最给力的帮助! 觉得有用 。采纳喔。。呵呵
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-05-24
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace myTxt
{
public partial class Form1 : Form
{
string text;//代表记事本里的内容
string path;//代表文件的路径
StringReader sr;

public Form1()
{
InitializeComponent();
text="";
path="";
sr = null;
}

//新建
private void 新建ToolStripMenuItem_Click(object sender, EventArgs e)
{
if (richTextBox1.Text != text)//内容改变了
{
DialogResult result = MessageBox.Show("内容已经更改,是否保存?", "友情提示", MessageBoxButtons.YesNoCancel);
if (result == DialogResult.Cancel)//取消
{
return;
}
if (result == DialogResult.Yes)//如果选择是
{
//保存实现,调用保存方法
保存ToolStripMenuItem_Click(sender, e);

}

//实现清空[新建]
richTextBox1.Text = "";
text = "";
path = "";

}
else
{
//实现清空[新建]
richTextBox1.Text = "";
text = "";
path = "";
}

}

//打开
private void 打开ToolStripMenuItem_Click(object sender, EventArgs e)
{
if (richTextBox1.Text != text)//已经更改了内容
{
DialogResult result = MessageBox.Show("内容已经更改,是否保存?", "友情提示", MessageBoxButtons.YesNoCancel);
if (result == DialogResult.Cancel)//取消
return;
if (result == DialogResult.Yes)
{
//保存实现,调用保存方法
保存ToolStripMenuItem_Click(sender, e);
}
}
//打开功能的实现
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
path=openFileDialog1.FileName;//取路径
richTextBox1.LoadFile(path, RichTextBoxStreamType.PlainText);
}
text = richTextBox1.Text;

}

//保存
private void 保存ToolStripMenuItem_Click(object sender, EventArgs e)
{
if (path == "")//一个新文件
{
//保存的实现
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
path = saveFileDialog1.FileName;
richTextBox1.SaveFile(path, RichTextBoxStreamType.PlainText);
}
}
else//已经存在的文件
{
//保存的实现
richTextBox1.SaveFile(path, RichTextBoxStreamType.PlainText);

}
text = richTextBox1.Text;

}

//另存为
private void 另存为ToolStripMenuItem_Click(object sender, EventArgs e)
{
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
path=saveFileDialog1.FileName;
richTextBox1.SaveFile(path, RichTextBoxStreamType.PlainText);
}
text = richTextBox1.Text;

}

//撤消
private void 撤消ToolStripMenuItem_Click(object sender, EventArgs e)
{
richTextBox1.Undo();
}

//剪切
private void 剪切ToolStripMenuItem_Click(object sender, EventArgs e)
{
richTextBox1.Cut();
}

//复制
private void 复制ToolStripMenuItem_Click(object sender, EventArgs e)
{
richTextBox1.Copy();
}

//粘贴
private void 粘贴ToolStripMenuItem_Click(object sender, EventArgs e)
{
richTextBox1.Paste();
}

//删除
private void 删除ToolStripMenuItem_Click(object sender, EventArgs e)
{
string str = richTextBox1.SelectedText;
if(str.Length>0)
richTextBox1.SelectedText="";
}

//查找
private void 查找ToolStripMenuItem_Click(object sender, EventArgs e)
{
find f = new find();
f.Owner = this;
f.Show();
}

//查找与替换
private void 查找与替换ToolStripMenuItem_Click(object sender, EventArgs e)
{
replace r = new replace();
r.Owner = this;
r.Show();
}

private void 退出ToolStripMenuItem_Click(object sender, EventArgs e)
{
if (richTextBox1.Text != text)//内容改变了
{
DialogResult result = MessageBox.Show("内容已经更改,是否保存?", "友情提示", MessageBoxButtons.YesNoCancel);
if (result == DialogResult.Cancel)//取消
{
return;
}
if (result == DialogResult.Yes)//如果选择是
{
//保存实现,调用保存方法
保存ToolStripMenuItem_Click(sender, e);
//实现清空[新建]
richTextBox1.Text = "";
text = "";
path = "";
}

Application.Exit();

}
else
{
Application.Exit();
}
}

private void 字体ToolStripMenuItem_Click(object sender, EventArgs e)
{
if(fontDialog1.ShowDialog()==DialogResult.OK)
{

richTextBox1.Font = fontDialog1.Font;
richTextBox1.ForeColor = fontDialog1.Color;
}
}

private void 页面设置ToolStripMenuItem_Click(object sender, EventArgs e)
{
pageSetupDialog1.Document = printDocument1;
pageSetupDialog1.ShowDialog();
}

private void 打印ToolStripMenuItem_Click(object sender, EventArgs e)
{
printDialog1.Document = printDocument1;
if(printDialog1.ShowDialog()==DialogResult.OK)
{
printDocument1.Print();
}

}

private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
Graphics g = e.Graphics;
Font f = richTextBox1.Font;

int rows = e.MarginBounds.Height / f.Height;//没页总行数
int strX = e.MarginBounds.Left;
int strY = e.MarginBounds.Top;
string str = null;//要打印的文本
int curRow = 0;//当前行
while ((curRow <= rows) && (str = sr.ReadLine()) != null)//如果还有行并且当前行数<每页总行数
{
g.DrawString(str, f, new SolidBrush(richTextBox1.ForeColor), new RectangleF(strX, strY, e.MarginBounds.Width, e.MarginBounds.Height));
strY += f.Height;//每画一行之后,新行的高度要改变
curRow++;
}
if (str != null)//如果
e.HasMorePages = true;
else
e.HasMorePages = false;

//checkPrint = richTextBox1.Print(checkPrint, richTextBox1.TextLength, e);
//if (checkPrint < richTextBox1.TextLength)
// e.HasMorePages = true;
//else
// e.HasMorePages = false;
}

private void toolStripMenuItem1_Click(object sender, EventArgs e)
{
printPreviewDialog1.Document = printDocument1;
sr = new StringReader(richTextBox1.Text);
printPreviewDialog1.ShowDialog();
}

private void button1_Click(object sender, EventArgs e)
{
if (richTextBox1.Text != text)//内容改变了
{
DialogResult result = MessageBox.Show("内容已经更改,是否保存?", "友情提示", MessageBoxButtons.YesNoCancel);
if (result == DialogResult.Cancel)//取消
{
return;
}
if (result == DialogResult.Yes)//如果选择是
{
//保存实现,调用保存方法
保存ToolStripMenuItem_Click(sender, e);
//实现清空[新建]
richTextBox1.Text = "";
text = "";
path = "";
}

Application.Exit();

}
else
{
Application.Exit();
}

}

}
}

在C#窗体应用程序中怎么在窗口关闭前保存ListBox中的内容?在下次程序登 ...
保存到本地 if (File.Exists(@"D:\\文件夹\\gz.dat")){ \/\/如果存在则删除 File.Delete(@"D:\\文件夹\\gz.dat");} string xinxi = textBox1.Text.Trim();StreamWriter sw = new StreamWriter(@"D:\\文件夹\\gz.dat", true, System.Text.Encoding.Default);sw.Write(xinxi);sw.Close();...

C#程序中怎样让一个窗口关闭是显示一个提示窗口
protected override void OnFormClosing(FormClosingEventArgs e){ DialogResult result = MessageBox.Show("确定关闭窗口?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);if (result == DialogResult.OK){ Application.ExitThread();} else { e.Cancel = true;} } ...

C#窗口程序,如何在窗口关闭时弹出警告对话框!
string message = "要关闭窗口?";string caption = "提示";MessageBoxButtons buttons = MessageBoxButtons.YesNo;DialogResult result; \/\/ Displays the MessageBox. result = MessageBox.Show(this, message, caption, buttons,MessageBoxIcon.Question); if (result == DialogResult.No){ \/...

c#点击保存的时候将数据存到服务器,点击取消数据不保存并关闭窗口...
cmd.CommandText = sql;MessageBox.Show("注册成功!你的号码为:" + Convert.ToInt32(cmd.ExecuteScalar()) + ",请记好!", "注册提示");} else { MessageBox.Show("注册失败!", "注册提示");} } catch (Exception ex){ MessageBox.Show(ex.Message);} finally { con.Close();} this...

C# 中窗口关闭问题
application.exit();是推出整个应用程序!this.Close(); 是推出本窗体!当然如果你这个窗口是主窗口,那肯定执行这个代码程序会退出整个退出。

c# 如何设置窗口退出密码
private void Form1_FormClosing( object sender, FormClosingEventArgs e ){ if( MessageBox.Show( "确定?", "提示", MessageBoxButtons.YesNo ) == DialogResult.Yes ){ this.Dispose();} else\/\/这里一定要写else,否则窗体一定会被关闭,不管密码是否正确。{ e.Cancel = true;} } 注意:这里...

怎样用c#关闭当前页面
JS 代码,可以成功发出关闭窗口的命令。但是,如果该窗口不是被浏览器窗口打开的,那么也许关不掉(此时即使你在 HTML 中使用 JS 关闭也关不了)。对于可以关闭的情况,也许浏览器会拦截此命令,向用户提示是否关闭。所以,这样的尴尬还是直接在 HTML 页面向用户提供一个关闭按钮吧,简单明了。

c#保存窗口截屏时弹出另存为对话框
SaveFile.RestoreDirectory = true;注意Filter这个属性。如果你是保存图片的话 SaveFilter.Filter = "bmp、jpg|*.bmp;*.jpg|All Files|*.*";=== 下面是MSDN的解释:如果 Filter 属性为 Empty,将显示所有文件。 始终显示文件夹。Filter 由以下部分组成:筛选器说明,后跟竖线 (|) 和筛选模式。 筛...

C#如何记忆窗体退出时的大小
然后在点击退出是回去窗口大小 获取窗口大小的代码入下 InPtr awin = GetForegroundWindow(); \/\/获取当前窗口句柄 RECT rect = new RECT();GetWindowRect(awin, ref rect);int width = rc.Right - rc.Left; \/\/窗口的宽度 int height = rc.Bottom - rc.Top; \/\/窗口的高度 ...

C#怎么判断另一窗口的按钮是否被按下?
这简单,采用死循(条件不等于按钮按下)环线程监听,但必须是另一个窗口是处于活动状态,当按钮按下则返回参数值(调用线程的那个方法)在你要显示的地方显示,一般显示记录放在ListView里面,或者保存在数据库,你是学习C#.NET不久吧

相似回答