尝试使用扩展方法将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 中
有人知道可能出了什么问题吗?谢谢
您的代码可以工作,但您似乎试图从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;
}
}
}