Posted on 2008-06-23 14:39 SmartStone 阅读(1334) 评论(2) 编辑 收藏 
//声明一个委托
publicdelegatevoidSetTextBoxValue(stringvalue);

        //委托使用文本框
voidSetMyTextBoxValue(stringvalue)
        {
            // Control.InvokeRequired 属性: 获取一个值,该值指示调用方在对控件进行方法调用时是否必须调用 Invoke 方法,因为调用方位于创建控件所在的线程以外的线程中。当前线程不是创建控件的线程时为true,当前线程中访问是False
            if (this.TextBoxControl.InvokeRequired)
            {
                SetTextBoxValue objSetTextBoxValue = new SetTextBoxValue(SetMyTextBoxValue);

                // IAsyncResult 接口:表示异步操作的状态。不同的异步操作需要不同的类型来描述,自然可以返回任何对象。
                // Control.BeginInvoke 方法 (Delegate):在创建控件的基础句柄所在线程上异步执行指定委托。
                IAsyncResult result = this.TextBoxControl.BeginInvoke(objSetTextBoxValue, new object[]{ value });
                try {
                    objSetTextBoxValue.EndInvoke(result);
                }
                catch {
                }
            }
            else
            {
                this.TextBoxControl.Text += value + Environment.NewLine;
                this.TextBoxControl.SelectionStart = this.TextBoxControl.TextLength;
                this.TextBoxControl.ScrollToCaret();
            }
        }

示例代码:

publicTestForm()
        {
            InitializeComponent();
        }

        privatedelegatevoidSetTextBoxValue(stringvalue);

        privatevoidSetMyTextBoxValue(stringvalue)
        {
            if (this.TextBoxControl.InvokeRequired)
            {
                SetTextBoxValue objSetTextBoxValue = new SetTextBoxValue(SetMyTextBoxValue);
                IAsyncResult result = this.TextBoxControl.BeginInvoke(objSetTextBoxValue, new object[] { value });
                try
                {
                    objSetTextBoxValue.EndInvoke(result);
                }
                catch
                {
                }
            }
            else
            {
                this.TextBoxControl.Text += value + Environment.NewLine;
                this.TextBoxControl.SelectionStart = this.TextBoxControl.TextLength;
                this.TextBoxControl.ScrollToCaret();
            }
        }

        privatevoidExecuteNewThread()
        {
            for (int i = 0; i < 1000; i++)
            {
                SetMyTextBoxValue(i.ToString());
            }
        }

        privatevoidNewThreadButton_Click(objectsender, EventArgs e)
        {
            Thread objThread = new Thread(new ThreadStart(ExecuteNewThread));
            objThread.IsBackground = true;
            objThread.Start();
        }
    }

转载于:https://www.cnblogs.com/zhangchenliang/archive/2012/04/12/2443789.html

C#:多线程使用TextBox控件相关推荐

  1. C#多线程操作界面控件的解决方案

    C#中利用委托实现多线程跨线程操作 - 张小鱼 2010-10-22 08:38 在使用VS2005的时候,如果你从非创建这个控件的线程中访问这个控件或者操作这个控件的话就会抛出这个异常.这是微软为了 ...

  2. ASP.Net TextBox控件只允许输入数字

    原文:ASP.Net TextBox控件只允许输入数字 1.1.在Asp.Net TextBox 控件的 OnKeyPress 事件中指定输入键盘码必须为数字: <asp:TextBox ID= ...

  3. 关于TextBox控件字体颜色绑定

    1.通过WPF绑定一个属性,比如bool型的数据 <TextBox BorderBrush="Transparent" Text="{Binding Path=Da ...

  4. DotNetTextBox V2.0 Web Control(ASP.NET2.0 增强型TextBox控件,完全支持AJAX.NET)

    [控件界面] [控件介绍] 名称:DotNetTextBox V2.0 Web Control 免费无限制版 类型:ASP.NET2.0 增强型TextBox控件 作者: 小宝.NET2.0 主页:h ...

  5. [转] c#中 多线程访问winform控件

    原文 c#中多线程访问winform控件的若干问题小结 我们在做winform应用的时候,大部分情况下都会碰到使用多线程控制界面上控件信息的问题.然而我们并不能用传统方法来解决这个问题,下面我将详细的 ...

  6. asp.net 动态创建TextBox控件 如何加载状态信息

    接着上文Asp.net TextBox的TextChanged事件你真的清楚吗? 这里我们来说说状态数据时如何加载的. 虽然在Control中有调用状态转存的方法,但是这里有一个判断条件 if (_c ...

  7. ASP.NET中TextBox控件的AutoCompleteType属性(不保存历史输入记录)

    ASP.NET AutoCompleteType 属性 返回 ASP.NET TextBox 控件参考手册 定义和用法 AutoCompleteType 属性用于设置或返回 TextBox 控件的 A ...

  8. c#多线程操作界面控件的简单实现

    一个小功能,早有人实现了.自己在一个项目中用到,觉得有必要记录一下,写下来. 代码 从上面你可能已经看出如何多线程操作同一个控件的,就是通过一个委托,然后定义委托方法,判断控件的InvokeRequi ...

  9. TextBox控件的DataBindings属性

    DataBindings属性是很多控件都有的属性,作用有2方面.一方面是用于与数据库的数据进行绑定,进行数据显示.另一方面用于与控件或类的对象进行数据绑定.这里主要关注后者.主要用法是将某个对象的某个 ...

最新文章

  1. 时钟极性和时钟相位概念
  2. 函数 —— fgets()
  3. 笔记-信息系统安全管理-信息系统的安全属性
  4. ACCESS 文本文件导入和导出指定字段类型的方法
  5. Qt路径中常用字符“./”、“../”、“/”、“*”的含义
  6. 史上最强大型分布式架构详解:高并发+数据库+缓存+分布式+微服务+秒杀
  7. Qt笔记-Linux程序打印带颜色的字符串
  8. mysql 查看collation_MySQL collation方法
  9. 我要学python之装饰器
  10. 用c语言编声光报警子程序,C语言编程的智能火灾报警监测系统
  11. MySQL 报错记录
  12. [Javascript]基于ExplorerCanvas绘制表盘时钟
  13. ECS查询特权接口DescribeAccountAttributes发布
  14. win10简单方法安装杜比v4音效!win10 1909适用!
  15. JVM垃圾回收机制【简单介绍】
  16. java map.put map_java中map的put方法
  17. 虚幻引擎(24)-2D动画序列
  18. centos镜像中Everything, GnomeLive ,KdeLive ,livecd ,NetInstall的意思
  19. 装饰模式实例与解析 实例一:变形金刚
  20. 弘辽科技:如何将新品打造成爆款?选对方法,教你轻松打造爆款

热门文章

  1. 2022年全球及中国软包电池铝塑膜行业规模价值与竞争格局展望报告
  2. 全球及中国页岩气市场供需前景与投资盈利分析报告2021版
  3. 全球及中国氢气储运行业规划方向及投资决策建议报告2021-2027年
  4. 中国LED产业园区现状模式及投资策略分析报告2022-2028年版
  5. Nuget打包类库及引用
  6. 电子工程师需要了解的SMT贴片质量问题汇总(转)
  7. day15-pymysql模块的使用
  8. selenide 自动化测试进阶一: 查找元素和相关操作
  9. git命令查看远程分支
  10. EVC实现拷贝文件夹下所有文件