C#richTextBox的一个保存问题

茗香淡然 2014-09-04 08:08:21
实例化的richTextBox 不能存储内容吗??

控件:
richTextBox1 comboBox1 button1

把下面的 public static void BindCom(RichTextBox txt,ComboBox com, string path)

改为

public static void BindCom(ComboBox com, string path)

去掉注释
//RichTextBox txt = new RichTextBox(); ← 注意这实例化

这样的话,保存内容是什么都没有,断点后看了一下,明明有内容的,却为何保存不了呢?求解惑!!!

//绑定下拉框数据
public static void BindCom(RichTextBox txt,ComboBox com, string path)
{
//RichTextBox txt = new RichTextBox(); ← 注意这实例化
string[] typeBooks;
if (!File.Exists(path))
{
typeBooks = new string[]{"选择类型","type0","type1",
"type2","type3","type4","type5","type6"};
int count = typeBooks.Count();
int len = 1;
foreach (var str in typeBooks)
{
txt.Text += str;

if (len < typeBooks.Count())
{ txt.Text += "\n"; len++; }
}
txt.SaveFile(path, RichTextBoxStreamType.PlainText);
}
FileStream fs = new FileStream(path,
FileMode.Open, FileAccess.Read, FileShare.None);
StreamReader sr = new StreamReader(fs, Encoding.Default);
txt.Text = sr.ReadToEnd();
sr.Close();
sr.Dispose();
typeBooks = txt.Lines;
foreach (var str in typeBooks)
{
if (str != "")
com.Items.Add(str);
}
com.SelectedIndex = 0;
}


private void button1_Click(object sender, EventArgs e)
{
//typeBooks = new string[]{"选择类型","type0","type1",
// "type2","type3","type4","type5","type6"};
//int count = typeBooks.Count();
//int len = 1;
//foreach (var str in typeBooks)
//{
// richTextBox1.Text += str;
// if (len < typeBooks.Count())
// { richTextBox1.Text += "\n"; len++; }
//}
//richTextBox1.SaveFile("Type.txt", RichTextBoxStreamType.TextTextOleObjs);

BindCom(richTextBox1 ,comboBox1, "Type.txt");
}
...全文
160 点赞 收藏 6
写回复
6 条回复
失落的神庙 2014年09月07日
string rtfstr= richTextBox1.Rtf;
回复 点赞
茗香淡然 2014年09月06日
引用 2 楼 wawd74520 的回复:
你直接保存 rtf就行了。 用不着这么麻烦。
怎么保存RTF ? richTextBox1 是测试看结果用的 , 测试好了 richTextBox1 就得删除了, RichTextBox txt = new RichTextBox(); 实例化保存不了内容...郁闷中...!!!
回复 点赞
茗香淡然 2014年09月06日
引用 2 楼 wawd74520 的回复:
你直接保存 rtf就行了。 用不着这么麻烦。
引用 3 楼 Z65443344 的回复:
richTextBox是个引用类型,它指向的是你窗口上的控件,相当于控件的句柄(其实不是句柄,就是比方) 你的richTextBox1应该是在窗体加载的时候就已经实例化好的,否则在窗口中根本没法给控件赋值取值啊 既然已经实例化好了,方法里怎么又使用new方法 那不是将变量重新赋值,指向了一个新的对象了么 这个新对象,是空白的,根本跟你窗体里的控件没有任何关系
怎么会没有关系呢?这不是相当于建立一个副本吗? 我这样的做法是想把 *.txt 的 Array(数组)内容加载到 comboBox 中,如果没有 *.txt 文件, 则把 string[] typeBooks 内容保存到 *.txt 中. 我不想用流去保存,想用 richTextBox.SaveFile(path, RichTextBoxStreamType.PlainText); 这个方法保存 流保存的用记事本打开不会显示段落全部加在一行里,就像这样: 不想要的效果 type0type1type2type3type4type5 想要的效果: type0 type1 type2 type3 type4 type5 type6
回复 点赞
於黾 2014年09月05日
richTextBox是个引用类型,它指向的是你窗口上的控件,相当于控件的句柄(其实不是句柄,就是比方) 你的richTextBox1应该是在窗体加载的时候就已经实例化好的,否则在窗口中根本没法给控件赋值取值啊 既然已经实例化好了,方法里怎么又使用new方法 那不是将变量重新赋值,指向了一个新的对象了么 这个新对象,是空白的,根本跟你窗体里的控件没有任何关系
回复 点赞
失落的神庙 2014年09月05日
你直接保存 rtf就行了。 用不着这么麻烦。
回复 点赞
茗香淡然 2014年09月05日
这都没人解惑一下??????????
回复 点赞
发动态
发帖子
C#
创建于2007-09-28

8.5w+

社区成员

64.0w+

社区内容

.NET技术 C#
社区公告
暂无公告