Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
存储有关richtextbox文本的所有信息并重新构建它-c#winforms_C#_Winforms_Richtextbox - Fatal编程技术网

存储有关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);
        }
    
  • 从文本文件中读取数据,并在WinFormApp2中分配给
    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的其他地方找到答案。