C# 保存(丰富)文本框';在我的表格中,用C语言编写一个richtextbox来关闭它们#

C# 保存(丰富)文本框';在我的表格中,用C语言编写一个richtextbox来关闭它们#,c#,winforms,richtextbox,C#,Winforms,Richtextbox,我的目标是在表单中有一个主richtextbox,然后在背景中有几个不同的richtextbox,背景文本框总是在场景后面添加、删除和编辑。。。我需要一种方法来交换表单中的richtextbox和后面的richtextbox。我最初拥有的是一本字典 Dictionary<string, RichTextBox> RichTextBoxs = new Dictionary<string, RichTextBox>(); 它保存的很好,但当我尝试类似 richTextBox

我的目标是在表单中有一个主richtextbox,然后在背景中有几个不同的richtextbox,背景文本框总是在场景后面添加、删除和编辑。。。我需要一种方法来交换表单中的richtextbox和后面的richtextbox。我最初拥有的是一本字典

Dictionary<string, RichTextBox> RichTextBoxs = new Dictionary<string, RichTextBox>();
它保存的很好,但当我尝试类似

richTextBox1 = RichTextBoxs[(string)Data];
什么也没发生!我可以复制属性,比如

richTextBox1.Text = RichTextBoxs[(string)Data].Text;
工作正常,但我需要复制所有属性,以及文本框中的高级颜色格式。我不知道它为什么不起作用,因为就我所知它应该起作用

小结:我需要能够将表单文本框与存储的文本框进行交换


~code exampled感谢!提前谢谢你

为什么不将每个文本框的数据存储在字典中,并在同一个实际控件中交换数据?据我所知,RTF的所有格式等都在原始文本数据中(可能不同于文本属性)。翻转并显示/隐藏所有这些控件可能会让你头疼,我认为另一种解决方案更可取

要添加更多内容,请执行以下操作: 它在示例中不起作用的原因是,您缺少了与windows窗体控件一起使用的大量设计器生成的代码;位置、大小、可见性等内容。您正在替换对原始RTF框的类引用,但新的RTF框没有初始化任何相同的内容

编辑2:
如果您真的需要让它按照所描述的那样工作,那么您必须在切换它们的代码中投入大量的工作。获取宿主控件(可能是表单本身)并移除当前显示的RTF框。然后,您必须初始化替换框的所有属性,如大小、位置、锚定样式等。最后,您需要将新控件实际添加到保存以前RTF框的宿主元素中。我现在想不起来了,但我认为还需要另外一个步骤来防止内存泄漏。

要解决您的问题,您只需要使用
Rtf
属性,而不是
Text
属性:

richTextBox1.Rtf = RichTextBoxs[(string)Data].Rtf;

但我同意David Hay的观点,即应该将Rtf字符串直接存储在字典中,而不是另一个隐藏的RichTextBox中。

同意。Extra form controls=更多的图形卡绘图、更多的内存和处理器资源,从长远来看可能还有更多的代码。啊,Rtf属性是我在回答“原始文本数据”时想到的。这是可行的,但正如您在上面的代码中所说的,没有理由保留这些额外的RTF框,因为它们所做的只是存储字符串数据。如果您仔细看看我的问题,我确实说过“TextBox”也会在后面编辑!没有展示。这意味着我要么需要文本框,要么需要编辑RTF directlyOK,我不会和你争论你应该做什么。你比我更了解你的项目。:)我很高兴能帮助你!
richTextBox1.Rtf = RichTextBoxs[(string)Data].Rtf;