将剪贴板中的文本粘贴到 RichTextBox 中时,新文本在 RichTextBox 前景色中没有着色

问题描述 投票:0回答:1

我为 RichTextBox 创建了一个 ToolStripMenuItem。在其 Click 事件中,我将剪贴板中的一些文本粘贴到 RichTextBox 中。

问题在于,在表单设计器中,RichTextBox 的

ForeColor
设置为
Color.Yellow
,但是如果剪贴板中的文本包含不同的颜色,则文本的某些部分将不会全部可见,因为 BackColor RichTextBox 是黑色的。
我想选择粘贴的文本并将其着色为黄色。

这是我粘贴文本的事件:

private void toolStripMenuItem1_Click(object sender, EventArgs e)
{
    // Handle the Paste event
    richTextBox1.Paste();

    // Set the desired formatting (e.g., yellow color) for the pasted text
    richTextBox1.SelectionColor = Color.Yellow;
}

我尝试添加行:

richTextBox1.SelectionColor = Color.Yellow;

但是并没有解决任何问题。

这是我粘贴到 RichTextBox 中的文本的屏幕截图示例。剪贴板中的文本部分为蓝色和棕色。
棕色被黑色的背景吞没了,蓝色很难看出来。我希望一切都是黄色的。

colors

如何更改我的代码,以便无论我将什么文本粘贴到 RichTextBox 中,它都会使用 RichTextBox 进行着色

ForeColor

c# winforms richtextbox
1个回答
1
投票

将文本粘贴到 RichTextBox 中时,插入符号将移动到新文本的末尾。
设置

SelectionColor
不会执行任何操作,因为未选择任何内容。
如果控件可以理解的任何格式应用于粘贴的文本,则该格式将被保留(例如,如果您粘贴从 Visual Studio 编辑器、MS Word 等复制的文本)

您可以在粘贴新文本之前存储插入符号位置,然后从当前位置(指向粘贴文本的末尾)减去该位置,以确定粘贴文本的长度。

然后仅选择该块,以更改其颜色。例如:

var previousStartPosition = richTextBox1.SelectionStart;

richTextBox1.Paste();

var newTextLength = richTextBox1.SelectionStart - previousStartPosition;
richTextBox1.Select(previousStartPosition, newTextLength);
richTextBox1.SelectionColor = Color.Yellow; // Or richTextBox1.ForeColor 
© www.soinside.com 2019 - 2024. All rights reserved.