如何保存文本的字体和颜色信息

夜色黎明 2008-11-18 10:20:58
现在学习做个类似记事本的程序,用的是richTextBox,纯文本的可以保存和读取,
但我希望能将文本中设置的字体大小和颜色信息也保存起来,读取的时候还能够还原。
这样要怎么才能实现????

注:整个问件不一定使用的是同一种字体和颜色,有可能不同的字,不同的行使用的字体和
颜色都不同,希望能保存所有设置的这些信息!!!

找了好长时间都没找到什么可用的办法,拜托大家进来帮帮忙吧,先谢过了!!!!
...全文
523 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
daxiang12092205 2011-08-18
  • 打赏
  • 举报
回复
private void btnSave_Click(object sender, EventArgs e)
{
richTextBox1.SaveFile(@"D:\c.rtf");
}

private void btnOpen_Click(object sender, EventArgs e)
{
string nextline = @"D:\c.rtf";
richTextBox2.LoadFile(nextline, RichTextBoxStreamType.RichText);
}
wasx8023 2010-08-16
  • 打赏
  • 举报
回复
纠结、
夜色黎明 2008-12-19
  • 打赏
  • 举报
回复
怎么回事?这帖我不是结了吗?今天竟然通知我没结帖,,,,,郁闷!!!!!!!!
夜色黎明 2008-11-18
  • 打赏
  • 举报
回复
大哥,这个格式的怎么保存和打开撒,上面的有几个都是说的这种方法,
可试过了根本不行,我昨天开可以50分的贴也回复的是用rtf保存,,,,,
mjjzg 2008-11-18
  • 打赏
  • 举报
回复
保存为rtf格式的
保存的时候这样保存
this.richTextBox1.SaveFile(this.saveFileDialog1.FileName,RichTextBoxStreamType.RichText);
打开的时候再以相同的形式打开
this.richTextBox1.LoadFile(this.openFileDialog1.FileName,RichTextBoxStreamType.RichText);
kimmking 2008-11-18
  • 打赏
  • 举报
回复
存rtf(其实时文本的),里面就注明了元素的字体 大小 颜色。
rtf文件格式的最前面是样式表。
夜色黎明 2008-11-18
  • 打赏
  • 举报
回复
写注册表的方法还没试过,但也只能搞定颜色,字体样式和大小怎么半??
夜色黎明 2008-11-18
  • 打赏
  • 举报
回复
怎么回事啊,都这么说那么应该是木问题的。。。。
lqa222 2008-11-18
  • 打赏
  • 举报
回复
private void SaveToRegistry() 
{
try
{
//以可写的方式打开SOFTWARE子键
RegistryKey softwarekey = Registry.LocalMachine.OpenSubKey("SOFTWARE", true);
//依次创建ChoseColor子键和Color子键
RegistryKey choseColorKey = softwarekey.CreateSubKey("ChoseColor");
RegistryKey colorKey = choseColorKey.CreateSubKey("Color");
//设置Color键的SetValue方法可能引发异常
colorKey.SetValue("Red", (int)BackColor.R);
colorKey.SetValue("Green", (int)BackColor.G);
colorKey.SetValue("Blue", (int)BackColor.B);
}
catch (Exception exc)
{
MessageBox.Show(exc.Message, "提示");
}
}
夜色黎明 2008-11-18
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 cpio 的回复:]
调用SaveFile("xxx.rtf"),保存为rtf文件

调用LoadFile("xxx.rtf"),从rtf文件加载,是带格式的
[/Quote]

这个试过了,打开的时候报错文件格式无效,
gomoku 2008-11-18
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 cpio 的回复:]
调用SaveFile("xxx.rtf"),保存为rtf文件

调用LoadFile("xxx.rtf"),从rtf文件加载,是带格式的
[/Quote]

use this one :)
夜色黎明 2008-11-18
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 gomoku 的回复:]
引用 4 楼 gomoku 的回复:
C# code
// save
richTextBox.SaveFile(@"c:\mytxt.rtf");


// load
string rtf = System.IO.File.ReadAllText( @"c:\mytxt.rft" );
richTextBox = rtf;


Correction to my post:

richTextBox.Rtf = rtf;
[/Quote]

这位老兄,@"c:\mytxt.rft" 这个@是干什么的?
我吧这句用myFileName代替了,myFileName从打开对话框获得,
myFileName = openFileDialog1.FileName;
但是执行道richTextBox.Rtf = rtf;时报错,文件格式无效,
然后我在C盘建了各mytxt.rft,完全用你的代码,但还是说格式无效啊!!!
gomoku 2008-11-18
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 gomoku 的回复:]
C# code
// save
richTextBox.SaveFile(@"c:\mytxt.rtf");


// load
string rtf = System.IO.File.ReadAllText( @"c:\mytxt.rft" );
richTextBox = rtf;
[/Quote]

Correction to my post:

richTextBox.Rtf = rtf;

cpio 2008-11-18
  • 打赏
  • 举报
回复
调用SaveFile("xxx.rtf"),保存为rtf文件

调用LoadFile("xxx.rtf"),从rtf文件加载,是带格式的
gomoku 2008-11-18
  • 打赏
  • 举报
回复

// save
richTextBox.SaveFile(@"c:\mytxt.rtf");


// load
string rtf = System.IO.File.ReadAllText( @"c:\mytxt.rft" );
richTextBox = rtf;
abcfy2 2008-11-18
  • 打赏
  • 举报
回复
private bool ReadRegistry()
{
//依次打开SoftWareKey和ChoseColor子键
RegistryKey softwareKey = Registry.LocalMachine.OpenSubKey("SOFTWARE");
RegistryKey choseColorKey = softwareKey.OpenSubKey("ChoseColor");
if (choseColorKey == null)
return false;
else
{
RegistryKey colorKey = choseColorKey.OpenSubKey("Color");
if (colorKey == null)
return false;
else
{
try
{
listBox1.Items.Add("成功打开键:" + colorKey.ToString());
//读取注册表中Color键的各个键值的值
int redComponet = (int)colorKey.GetValue("Red");
int greenComponent = (int)colorKey.GetValue("Green");
int blueComponent = (int)colorKey.GetValue("Blue");
BackColor = Color.FromArgb(redComponet, greenComponent, blueComponent);
//遍历由指定子键拥有的键值名称组成的字符串数组
foreach (string sValName in colorKey.GetValueNames())
{
listBox1.Items.Add(sValName + "分量值:" + colorKey.GetValue(sValName));
}
return true;
}
catch (Exception exc)
{
MessageBox.Show(exc.Message, "提示");
return false;
}
}
}
}
cpio 2008-11-18
  • 打赏
  • 举报
回复
保存成rtf文件啊,是带格式的
abcfy2 2008-11-18
  • 打赏
  • 举报
回复
可以考虑用注册表来存储。
颜色设置调用控件colorDialog,通过方法写入注册表。
using Microsoft.Win32;//用到Registry和RegistryKey两个类
//写入注册表
private void SaveToRegistry()
{
try
{
//以可写的方式打开SOFTWARE子键
RegistryKey softwarekey = Registry.LocalMachine.OpenSubKey("SOFTWARE", true);
//依次创建ChoseColor子键和Color子键
RegistryKey choseColorKey = softwarekey.CreateSubKey("ChoseColor");
RegistryKey colorKey = choseColorKey.CreateSubKey("Color");
//设置Color键的SetValue方法可能引发异常
colorKey.SetValue("Red", (int)BackColor.R);
colorKey.SetValue("Green", (int)BackColor.G);
colorKey.SetValue("Blue", (int)BackColor.B);
}
catch (Exception exc)
{
MessageBox.Show(exc.Message, "提示");
}
}
abcfy2 2008-11-18
  • 打赏
  • 举报
回复
记得以前学过这个。
似乎得调用windows api,写入注册表信息或是INI信息
hanyu0528 2008-11-18
  • 打赏
  • 举报
回复
顶上去
加载更多回复(1)

111,131

社区成员

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

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

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