private delegate void SetTextCallback(string text);
private delegate void SetSelectCallback(object Msge);
private void SetText(string tt)
{
string text = tt;
try
{
if (this.richTextBox1.InvokeRequired)
{
SetTextCallback d = new SetTextCallback(SetText);
this.Invoke(d, new object[] { text });
}
else
{
if (this.richTextBox1.Lines.Length < Properties.Settings.Default.textclearLength)
{
this.richTextBox1.AppendText(text);
of_SetRichCursor(richTextBox1);
}
else
{
this.richTextBox1.Clear();
}
}
}
catch (Exception)
{
}
}
private void of_SetRichCursor(object msge)
{
try
{
RichTextBox richbox = (RichTextBox)msge;
//设置光标的位置到文本尾
if (richbox.InvokeRequired)
{
SetSelectCallback d = new SetSelectCallback(of_SetRichCursor);
this.Invoke(d, new object[] { msge });
}
else
{
richbox.Select(richbox.TextLength, 0);
//滚动到控件光标处
richbox.ScrollToCaret();
}
}
catch (Exception)
{
}
}
本文探讨了在C#中使用私有委托SetTextCallback和SetSelectCallback进行文本控件更新的方法,通过Invoke确保UI线程的安全调用,避免跨线程操作引发的异常。
5490

被折叠的 条评论
为什么被折叠?



