存储有关richtextbox文本的所有信息并重新构建它-c#winforms
是否有办法将有关文本的所有信息存储在一个存储有关richtextbox文本的所有信息并重新构建它-c#winforms,c#,winforms,richtextbox,C#,Winforms,Richtextbox,是否有办法将有关文本的所有信息存储在一个richtextbox(颜色、大小、字体等)中,并在另一个richtextbox,中重新构建,而该文本的格式或项目不相同? 例如,我有一个richtextbox,它的文本包含多种字体和颜色,一些行居中,我想在另一个richtextbox中重建它 我补充说,新的richtextbox不在同一个项目中,因此我需要将信息还原到某个位置(例如,即使在字符串或文件中)。要将文本和格式从一个richtextbox复制到另一个richtextbox,只需使用: rich
richtextbox
(颜色、大小、字体等)中,并在另一个richtextbox
,中重新构建,而该文本的格式或项目不相同?
例如,我有一个richtextbox,它的文本包含多种字体和颜色,一些行居中,我想在另一个richtextbox中重建它
我补充说,新的richtextbox不在同一个项目中,因此我需要将信息还原到某个位置(例如,即使在字符串或文件中)。要将文本和格式从一个richtextbox复制到另一个richtextbox,只需使用:
richtextBox2.Rtf = richtextBox1.Rtf;
该属性只是一个字符串,因此您可以对其执行任何可以对字符串执行的操作。您可以通过以下步骤执行此操作 假设我们有两个项目 第一个是WinFormApp1,第二个是WinFormApp2
private void Form1_Load(object sender, EventArgs e)
{
const string path = @"D:\RichTextBox\Example.txt";
if (File.Exists(path))
{
richTextBox1.Rtf = System.IO.File.ReadAllText(path);
}
}
RichTextBox1
的RTF
保存在WinFormApp1文本文件中
在WinFormApp1中
const string path = @"D:\RichTextBox\Example.txt";
var rtbInfo = richTextBox1.Rtf;
if (!File.Exists(path))
{
File.Create(path);
TextWriter textWriter = new StreamWriter(path);
textWriter.WriteLine(rtbInfo);
textWriter.Close();
}
else if (File.Exists(path))
{
File.WriteAllText(path, rtbInfo);
}
RichTextBox1
的RTF
private void Form1_Load(object sender, EventArgs e)
{
const string path = @"D:\RichTextBox\Example.txt";
if (File.Exists(path))
{
richTextBox1.Rtf = System.IO.File.ReadAllText(path);
}
}
在WinFormApp2中
private void Form1_Load(object sender, EventArgs e)
{
const string path = @"D:\RichTextBox\Example.txt";
if (File.Exists(path))
{
richTextBox1.Rtf = System.IO.File.ReadAllText(path);
}
}
你是指文本和格式,还是仅指格式(颜色、字体…)@HeinzKessler文本和格式Heinz的回答指出:你可以用字符串做任何事情,所以将Rtf字符串持久化到其他项目中应该很简单。你打算怎么做,如果它们来自两个不同的项目?@BogdanDoicin我会将其写入文件或通过套接字发送。@HeinzKessler是否有rtf更改事件?除了TextChanged之外没有此类事件。许多或大多数格式化都是通过先更改选定内容来完成的,因此更改选定内容可能会有所帮助。谁在做这些改变?不是你的代码??“不同的项目”毫无意义。如果这两个项目最终成为同一应用程序的一部分,那么当这两个控件位于不同的大陆上时,您可以使用完全不同的方法。但是,由于rtf只不过是字符串,所以可以像发送任何其他字符串一样发送这些字符串。因此,这里的问题已经得到了回答,对于他剩下的问题,他将在SO的其他地方找到答案。