从RichTextBox复制所选文本

时间:2010-10-31 17:14:45

标签: c# winforms richtextbox

我在网上搜索过但我找不到复制/剪切/粘贴RichTextBox中所选文字的方法。

即使MSDN也没有答案。他们提供的代码不起作用:Copy()似乎只适用于TextBoxes,而不是RichTextBox。

6 个答案:

答案 0 :(得分:9)

如果我复制这个方法:

Clipboard.SetText(richTextBox1.SelectedRtf, TextDataFormat.Rtf);

我无法粘贴到记事本

如果我复制这个方法:

Clipboard.SetText(richTextBox1.SelectedText, TextDataFormat.UnicodeText);

它在Word和记事本中工作,但在单词中插入而没有格式化

richTextBox1.Copy();

在Word和记事本中工作,但我无法修改字符串值。

如何在剪贴板中复制正常格式化的字符串?

P.S。我找到了

DataObject dto = new DataObject();
dto.SetText(mesrtf, TextDataFormat.Rtf);
dto.SetText(mes, TextDataFormat.UnicodeText);
Clipboard.Clear();
Clipboard.SetDataObject(dto);

它有效

答案 1 :(得分:5)

如果您使用的是.NET 3.0及更高版本,则可以始终使用Clipboard.SetText()

我发现当我想要richTextBox中的所有东西而不必先选择所有内容或需要更改字符串时,使用剪贴板很有用:

string text = "Summary:" + Environment.NewLine + this.richTextBoxSummary.Text;
Clipboard.SetText(text);

答案 2 :(得分:0)

richTextBox1.SelectAll();

richTextBox1.Copy();

/ *

选择框中的所有txt,并在将其再次粘贴到记事本中时保留格式

* /

答案 3 :(得分:0)

  

VB.NET代码(同时支持格式文本和纯文本)

剪切

 Private Sub CutToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles CutToolStripMenuItem.Click

        Try
            If RichTextBox1.SelectedText <> "" Then
                Clipboard.SetData(DataFormats.Rtf,RichTextBox1.SelectedRtf)
                RichTextBox1.SelectedRtf = ""
            Else
                MsgBox("No item is selected to cut", MsgBoxStyle.Information, "Cut")
            End If
        Catch ex As Exception
            MsgBox("Can't cut the selected item", MsgBoxStyle.Critical, "Cut")
        End Try
    End Sub

复制

 Private Sub CopyToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles CopyToolStripMenuItem.Click

        Try
            If RichTextBox1.SelectedText <> "" Then
                Clipboard.SetData(DataFormats.Rtf,RichTextBox1.SelectedRtf)
            Else
                MsgBox("No item is selected to copy", MsgBoxStyle.Information, "Copy")
            End If
        Catch ex As Exception
            MsgBox("Can't copy the selected item", MsgBoxStyle.Critical, "Copy")
        End Try
    End Sub

粘贴

 Private Sub PasteToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles PasteToolStripMenuItem.Click

        Try
            If Clipboard.ContainsText(TextDataFormat.Rtf) Then
                RichTextBox1.SelectedRtf = Clipboard.GetData(DataFormats.Rtf).ToString()
            ElseIf Clipboard.ContainsText(TextDataFormat.Text) Then
                RichTextBox1.SelectedText = Clipboard.GetData(DataFormats.Text).ToString()
            Else
                MsgBox("Clipboard is not contained with the valid text format ", MsgBoxStyle.Information, "Paste")
            End If
        Catch ex As Exception
            MsgBox("Can't paste the item", MsgBoxStyle.Critical, "Paste")
        End Try
    End Sub

答案 4 :(得分:0)

尝试一下:

复制

Clipboard.SetText(richTextBox1.Text);

粘贴

richTextBox1.Paste();

剪切

richTextBox1.Cut();

然后我们就把它简化了,因为如果他/她想复制,粘贴,剪切文本,用户可以自行选择,这样就不用说任何简单的参数了,或者用户会怎么笑让我复制文本就这些了

答案 5 :(得分:-2)

在wpf中

richTextBox1.Copy();

richTextBox1.Paste();