关于做记事本保存的代码,让加个判断(c#),在线等

2024-12-14 08:42:09
推荐回答(5个)
回答1:

给你个思路,你的程序应该有新建和打开两种状态,应该有一个属性去记录文件名.
如果是打开的,你的程序应该把这个文件的完整路径记录下来,就好像Word,如果是新建的,标题上显示的就是文档1,如果是打开的,就显示原来的文件名。你在打开文件的时候应该给记录文件完整路径的这个属性赋值,但是在新建的时候不用,那么在保存的时候你只要判断这个属性是否是空或者空字符串就可以了,如果为空,说明是新建的,要弹出SaveFileDialog,保存后把保存的文件名赋给这个属性,状态改为打开的状态了;否则就直接覆盖原来的文件。

我不清楚你完整的代码怎么样
比如定义个属性
private string m_FileName;
public string FileName
{
get{return m_FileNmae;}
set{m_FileName = value;}
}
那么
SaveFileDialog a = new SaveFileDialog();
//如果是打开状态
if (!string.IsNullOrEmpty(FileName))
{

richTextBox1.SaveFile(this.Text, RichTextBoxStreamType.PlainText);

//如果是打开的文件,就直接存储
}
else
{
//这里弹出a,如果点了确定的话,就保存
if(a.ShowDialog() == DialogResult.OK)
{
lingcunwei_Click(null, null);//如果是新建就让他跳到另存为
}
}

回答2:

定义一个 bool 的全局变量 path,如果文件发是打开的,那么它肯定有个地址,不为null或者空(注意这个顺序);如果是新建,那么path肯定是null或者空

这样你在if里面加上(path!=null || path!="")就可以了

这样做的好处是你的path得到了充分利用,后面的编码中也会用到

回答3:

///


/// "保存" 文件
///

///
///

private void 保存SAltSToolStripMenuItem_Click(object sender, EventArgs e)
{
string filePath = "C:\\Documents and Settings\\student\\桌面";
Encoding encoding;
byte[] by;
FileStream fs;
try
{
fs = File.Create(filePath);
encoding = System.Text.Encoding.GetEncoding("GB2312");
by = encoding.GetBytes(txtContent.Text);
fs.Write(by, 0, by.Length);
fs.Flush();
fs.Close();

int indexOne = filePath.LastIndexOf('\\');
int indexTwo = filePath.LastIndexOf('.');
int num = indexTwo - indexOne;
string strNew = "新建 文本文档.txt";
this.Text = strNew + " - 记事本";

}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}

}

///
/// "另存为"
///

///
///
private void 另存为AAltAToolStripMenuItem_Click(object sender, EventArgs e)
{
string filePath = "";
Encoding encoding;
byte[] by;
FileStream fs;
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
filePath = saveFileDialog1.FileName;
try
{
fs = File.Create(filePath);
encoding = System.Text.Encoding.GetEncoding("GB2312");
by = encoding.GetBytes(txtContent.Text);
fs.Write(by, 0, by.Length);
fs.Flush();
fs.Close();

int indexOne = filePath.LastIndexOf('\\');
int indexTwo = filePath.LastIndexOf('.');
int num = indexTwo - indexOne;
string strNew = filePath.Substring((indexOne+1),(num-1));
this.Text = strNew + " - 记事本";

}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}

}
}

已经做出来,经过测试

回答4:

用:System.IO.File.Exists()判断文件是否存在.如果存在.
用:System.IO.File.Delete()将其删掉.再另存.
如果文件不存在.直接另存.

-----------------------

我没有用过richTextBox..对其有个大概的了解.
只是针对你的意思给你点儿思路..你试试吧.不好意思..

回答5:

定义一个bool的变量open=false
打开文件的时候open=true;
如果是新建的就open=false
然后在判断的立方写
open