如何从一个RichTextBox向另一个RichTextBox发送不同文本大小的字符串?

时间:2015-05-18 05:12:31

标签: c# fonts append richtextbox font-size

我的代码中包含下标字体较小的化合物。我目前有这个代码,可以通过按钮点击将其从一个RichTextBox转移到另一个。

myRichTextBox.Text += otherRichTextBox.Text

otherRichTextBox我的化合物具有不同的字体大小但是当我这样做时,我最终得到myRichTextBox中的一个字符串,该字符串不保留不同的字体大小并将它们全部设置到框中主要属性字体和大小。

2 个答案:

答案 0 :(得分:2)

来自msdn上的documentation

  

“Text属性不会返回有关应用于RichTextBox内容的格式的任何信息。要获取富文本格式(RTF)代码,请使用Rtf属性。”

因此,要使用格式分配值,请使用:

myRichTextBox.Rtf = otherRichTextBox.Rtf;

我已将+=替换为=,因为我不确定您是否要附加该值,而不是仅仅替换它。如果您使用+=,则可能会因为“rtf”代码一个接一个地附加而遇到问题。但是,试一试......你可能根本不会遇到任何问题。

答案 1 :(得分:1)

要复制包含格式的文本,您应该使用通常的RTB方式:

  • 进行选择,然后对其采取行动!

无论你做什么,这都是要走的路:

  • 使用SelectionFontSelectionColorSelectionAlignment等设置文字样式。
  • 使用CutCopyPaste
  • 插入或移除文字
  • Find text或AppendText

以下是如何处理您的问题:

otherRichTextBox.SelectionStart = 0;
otherRichTextBox.SelectionLength = otherRichTextBox.Text.Length;
myRichTextBox.AppendText(otherRichTextBox.SelectedText);

要在n位置插入文字部分,请编写

otherRichTextBox.SelectionStart = 0;
otherRichTextBox.SelectionLength = otherRichTextBox.Text.Length;
myRichTextBox.SelectionStart = n;
myRichTextBox.SelectionLength  = 0;
myRichTextBox.SelectedText = otherRichTextBox.SelectedText;

你需要遵守规则随时你想以任何方式以任何方式更改格式化文字

有一点涉及但保证在本书中正确工作。

要简单地“克隆”全文,请转到Grant的代码:

myRichTextBox.Rtf = otherRichTextBox.Rtf;

如果您know正在执行的操作,可以使用原始Rtf代码,但即使某些内容可能仍然看起来不错,因为某些错误和大多数冗余会被忽略,它有收集废话的倾向..所以你应该遵循黄金法则:

  • 进行选择,然后对其采取行动!

更新:Here是一种只用两行正确解决问题的好方法! (但你仍然需要遵守规则..)