It seems that sometimes when you get the text from a RichTextBox object, for instance to put it on the Clipboard, that the carriage return/line feeds are not handled properly. For instance the RichTextBox object may contain 2 lines of text, but its Text attribute may actually show those 2 lines concatenated together on 1 line.
For instance in the RichTextBox you have:
This is line 1 This is line 2
And its Text attribute shows:
This is line 1This is line 2
To work around this, you can iterate through the individual lines from the RichTextBox Lines attribute, and concat each line with the StringBuilder AppendLine() method.
Here is an example:
private System.Windows.Forms.RichTextBox richTextBox;
private System.Windows.Forms.Button button;
. . .
private void button_Click(object sender, EventArgs e)
{
// Get lines one by one instead of using .Text attribute
// of RichTextForm due to CR/LF issues.
int sbLen = richTextBox.Text.Length
+ (richTextBox.Lines.Length << 1);
StringBuilder sb = new StringBuilder(sbLen);
foreach (String line in richTextBox.Lines) {
sb.AppendLine(line);
}
// Place both text and RTF formats on the clipboard.
DataObject cbData = new DataObject();
cbData.SetData(DataFormats.Text, sb.ToString());
cbData.SetData(DataFormats.Rtf, richTextBox.Rtf);
Clipboard.SetDataObject(cbData);
}
Nice solution! Thanks very much.