正在用c#做记事本的功能,但读取和保存文件时总是不能保持修改后的字体大小。请教高手,有什么方法?以下是我的读取和保存的代码:
------------------------------------------------------ private void fileOpen_Click(object sender, EventArgs e)
{
SaveFileDialog filedlg = new SaveFileDialog();
filedlg.Filter = "Text Document(*.txt)|*.txt|All Files(*.*)|*.*";
filedlg.Title = "打开文件";
filedlg.ValidateNames = true;
try
{
if (filedlg.ShowDialog() == DialogResult.OK)
{
//StreamReader sr = new StreamReader(filedlg.FileName,System.Text.Encoding.Default);
FileStream fs = new FileStream(filedlg.FileName,FileMode.OpenOrCreate,FileAccess.ReadWrite);
StreamReader sr = new StreamReader(fs);
ArrayList buffer = new ArrayList();
//从文件中读取内容并赋给显示文件内容对象框
while (sr.Peek() != -1)
{
buffer.Add(sr.ReadLine()); //一次读取一行数据
}
newForm child2 = new newForm();
child2.MdiParent = this;
child2.textBox.Lines = (String[])buffer.ToArray(Type.GetType("System.String"));
sr.Close();
child2.Text = filedlg.FileName;
child2.textBox.Select(0, 0);
child2.Show(); }
}
catch(Exception ex)
{
MessageBox.Show(this,ex.Message,"打开文件错误",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
} private void fileAnother_Click(object sender, EventArgs e)
{
//另存为
SaveFileDialog sfd = new SaveFileDialog();
sfd.CheckFileExists = true;
sfd.Filter = "Text Document(*.txt)|*.txt|All Files(*.*)|*.*";
sfd.Title = "打开文件";
sfd.ValidateNames = true;
if (sfd.ShowDialog() == DialogResult.OK)
{
string fileName = sfd.FileName;
SaveFile(fileName);
} }
protected void SaveFile(string fileName)
{
try
{
Stream stream = File.OpenWrite(fileName);
using (StreamWriter writer = new StreamWriter(stream))
{
writer.Write(this.ActiveMdiChild.ActiveControl.Text);
this.ActiveMdiChild.Text = fileName;
}
stream.Close();
}
catch (IOException ex)
{
MessageBox.Show(ex.Message, "SimpleText", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
}--------------------------------------------------------谢谢指教!
------------------------------------------------------ private void fileOpen_Click(object sender, EventArgs e)
{
SaveFileDialog filedlg = new SaveFileDialog();
filedlg.Filter = "Text Document(*.txt)|*.txt|All Files(*.*)|*.*";
filedlg.Title = "打开文件";
filedlg.ValidateNames = true;
try
{
if (filedlg.ShowDialog() == DialogResult.OK)
{
//StreamReader sr = new StreamReader(filedlg.FileName,System.Text.Encoding.Default);
FileStream fs = new FileStream(filedlg.FileName,FileMode.OpenOrCreate,FileAccess.ReadWrite);
StreamReader sr = new StreamReader(fs);
ArrayList buffer = new ArrayList();
//从文件中读取内容并赋给显示文件内容对象框
while (sr.Peek() != -1)
{
buffer.Add(sr.ReadLine()); //一次读取一行数据
}
newForm child2 = new newForm();
child2.MdiParent = this;
child2.textBox.Lines = (String[])buffer.ToArray(Type.GetType("System.String"));
sr.Close();
child2.Text = filedlg.FileName;
child2.textBox.Select(0, 0);
child2.Show(); }
}
catch(Exception ex)
{
MessageBox.Show(this,ex.Message,"打开文件错误",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
} private void fileAnother_Click(object sender, EventArgs e)
{
//另存为
SaveFileDialog sfd = new SaveFileDialog();
sfd.CheckFileExists = true;
sfd.Filter = "Text Document(*.txt)|*.txt|All Files(*.*)|*.*";
sfd.Title = "打开文件";
sfd.ValidateNames = true;
if (sfd.ShowDialog() == DialogResult.OK)
{
string fileName = sfd.FileName;
SaveFile(fileName);
} }
protected void SaveFile(string fileName)
{
try
{
Stream stream = File.OpenWrite(fileName);
using (StreamWriter writer = new StreamWriter(stream))
{
writer.Write(this.ActiveMdiChild.ActiveControl.Text);
this.ActiveMdiChild.Text = fileName;
}
stream.Close();
}
catch (IOException ex)
{
MessageBox.Show(ex.Message, "SimpleText", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
}--------------------------------------------------------谢谢指教!
文本没有字体大小,所谓的字体大小只是编辑器显示的问题
---------------------------------------------------------------
用记事本看看吧,编辑后字体和字的大小是可以保存的。我就是想问,用C#如何实现,
using (StreamWriter writer = new StreamWriter(fileName,false,System.Text.Encoding.UTF8));或者
using (StreamWriter writer = new StreamWriter(fileName,false,System.Text.Encoding.GetEncoding("Gb2312")));
---------------------------
哦,真是这样哦。。
用了几年记事本,到现在才知道,无奈。
谢谢net_lover(【孟子E章】)指点!结贴了,送分了。。