How do I send varying text sized strings from one RichTextBox to another?

前端 未结 2 1949
温柔的废话
温柔的废话 2021-01-28 23:19

I have code that has chemical compounds that have small font for the subscript. I currently have this code that transfers it from one RichTextBox to another one on

2条回答
  •  忘掉有多难
    2021-01-28 23:40

    To copy text including formatting you should use the usual RTB way:

    • Make a Selection and then act on it!

    This is the way to go, no matter what you do:

    • Style your text with SelectionFont, SelectionColor, SelectionAlignment etc..
    • Insert or remove text with Cut, Copy or Paste
    • Find text or AppendText

    Here is how to do what you asked about:

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

    To insert the portion of text at position n you write

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

    You need to go by the rule anytime you want to change formatted text in pretty much any way!

    A little bit involved but guaranteed to work correctly as it goes by the book.

    To simply 'clone' the full text, go by Grant's code:

    myRichTextBox.Rtf = otherRichTextBox.Rtf;
    

    It is possible to work with the raw Rtf codes, if you know what you are doing, but even if some things may still look ok for a while because some errors and most redundancies get ignored, it has a tendency to collect crap.. So you should follow the golden rule:

    • Make a Selection and then act on it!

    Update: Here is a nice way to solve your problem correctly with only two lines! (But you still need to live by the rule..)

提交回复
热议问题