尝试使用扩展方法将AppendText附加到RichTextBox时出现无效操作异常

本文关键字:RichTextBox 异常 操作 无效 扩展 方法 AppendText | 更新日期: 2023-09-27 18:25:39

StackOverflow上的另一个问题提供了RichTextBox的扩展方法。

public static class RichTextBoxExtensions
    {
        public static void AppendText(this RichTextBox box, string text, Color color)
        {
            box.SelectionStart = box.TextLength;
            box.SelectionLength = 0;
            box.SelectionColor = color;
            box.AppendText(text);
            box.SelectionColor = box.ForeColor;
        }
    }

我正试着这样使用它:

public void Write(string Text)
        {
            Color Green = Color.Green;
            TxtBox.AppendText(Text, Green);
        }

然而,当我运行这个时,我会得到

"System.InvalidOperationException"类型的首次机会异常发生在System.Windows.Forms.dll 中

有人知道可能出了什么问题吗?谢谢

尝试使用扩展方法将AppendText附加到RichTextBox时出现无效操作异常

您的代码可以工作,但您似乎试图从UI线程以外的其他线程访问richtextbox。

您可以更改您的扩展方法如下:

public static class RichTextBoxExtensions
{
    public static void AppendText(this RichTextBox box, string text, Color color)
    {
        if (box.InvokeRequired)
            box.Invoke((Action)(() => AppendText(box, text, color)));
        else
        {
            box.SelectionStart = box.TextLength;
            box.SelectionLength = 0;
            box.SelectionColor = color;
            box.AppendText(text);
            box.SelectionColor = box.ForeColor;
        }
    }
}