C#线程中更改TextBox 和RichText的值

本文介绍了一种在C#中从后台线程安全地更新UI元素的方法,具体包括TextBox和RichTextBox控件。通过使用委托和Invoke机制,确保了在多线程环境下对UI控件进行更新时不会引发异常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C#线程中更改TextBox 和RichText的值

        delegate void SetTextCallback(string text);
        private void SetText(string text)
        {
            if (this.txtLog.InvokeRequired)
            {
                SetTextCallback d = new SetTextCallback(SetText);
                this.Invoke(d, new object[] { text });
            }
            else
            {
                txtLog.AppendText(text + Environment.NewLine);
                txtLog.ScrollToCaret();

                this.txtLog.Focus();
                this.txtLog.Select(this.txtLog.TextLength, 0);
                this.txtLog.ScrollToCaret();
            }
        }
RichText可以设置字体、字体颜色、背景色等信息

private bool m_bolHighlight = false;
        private delegate void delInfoList(string text);//申明委托,防止不同线程设置richtextbox时出现错误
        void SetrichTextBox(string value)
        {

            if (rtxtLogs.InvokeRequired)
            {
                delInfoList d = new delInfoList(SetrichTextBox);
                rtxtLogs.Invoke(d, value);
            }
            else
            {
                if (rtxtLogs.Lines.Length > 5000)
                {
                    rtxtLogs.Clear();                    
                }

                //========richtextbox滚动条自动移至最后一条记录
                //让文本框获取焦点  
                rtxtLogs.Focus();
                //设置光标的位置到文本尾  
                rtxtLogs.Select(rtxtLogs.TextLength, 0);
                //滚动到控件光标处  
                rtxtLogs.ScrollToCaret();
                if (m_bolHighlight)
                {
                    rtxtLogs.SelectionFont = new Font("Verdana", 9, FontStyle.Bold);
                    rtxtLogs.SelectionColor = Color.Red;
                }
                rtxtLogs.AppendText(value + Environment.NewLine);                
            }
        }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值