线程读写控件需要用委托(delegate)与Invoke/BeginInvoke来进行

参考内容:http://www.cnblogs.com/runner/archive/2011/12/30/2307576.html

1. 获取TextBox中的值

代码一:

         public delegate string GetTextBoxCallBack();
private string GetInputText()
{
try
{
if (this.txtInput.InvokeRequired)
{
GetTextBoxCallBack gtb = new GetTextBoxCallBack(GetInputText);
IAsyncResult ia = txtInput.BeginInvoke(gtb);
return (string)txtInput.EndInvoke(ia); //这里需要利用EndInvoke来获取返回值
}
else
{
return txtInput.Text;
}
}
catch (Exception ex)
{
return "";
}
}

代码二:

         private string GetTextCallBack()
{
if (this.txtInput.InvokeRequired)
{
string inputTxt = string.Empty;
this.txtInput.Invoke(new MethodInvoker(delegate { inputTxt = txtInput.Text; }));
return inputTxt;
}
else
{
return this.txtInput.Text;
}
}

2.线程设置TextBox值

代码一:

         delegate void SetTextBoxCallback(string text);
private void SetInputText(string text)
{
if (this.txtInput.InvokeRequired)
{
SetTextBoxCallback d = new SetTextBoxCallback(SetInputText);
this.Invoke(d, new object[] { text });
}
else
{
this.txtInput.Text = text;
}
}

代码二:

 string changeTxt = "Change Text";
txtInput.Invoke(new Action<String>(p =>
{
txtInput.Text = changeTxt;
}), txtInput.Text);

C# 线程获取/设置控件(TextBox)值的更多相关文章

  1. WPF非UI线程获取修改控件属性值的方法

    public class InvokeHelper { #region delegates private delegate object MethodInvoker(Control control, ...

  2. Android线程中设置控件

    在Android中经常出现多线程中设置控件的值报错的情况,今天教大家封装一个简单的类避免这样的问题,同样也调用实现也非常的方便. 自定义类: /** * Created by wade on 2016 ...

  3. Jquary获取页面控件的值

    一 Jquery获得服务器控件值的方法由于ASP.NET网页运行后,服务器控件会随机生成客户端id,jquery获取时候不太好操作,google了下,总结有以下3种方法: 服务器控件代码:<as ...

  4. asp.net后台获取html控件的值

    1.asp.net后台获取前台type=text控件的值 前台:<input name="txtName" class="username" type=& ...

  5. C# 动态代码生成控件后其他事件不能获取该控件的值

    1.新建web项目,添加两个Button控件,结果如图. 2.Button按钮控件点击事件代码如下 protectedvoid Button1_Click(object sender, EventAr ...

  6. 在后台获取Textarea控件的值

    使用Request.Form方法 1.在前台设置name 属性 <textarea name="Content">hdjfhjdfhdj</textarea> ...

  7. 后台获取html控件的值

    string name = Request.Form["Name1"].ToString(); “xxx” 里的是name值 Request["xx"]取到相同 ...

  8. .NET后台如何获取前台HMTL控件的值

    很多时候我们需要HTML控件,感觉比服务器控件更加简介,清爽,那么如何获取HMTL控件的值呢,请看下面例子: 前台页面代码: <input id="Text1" type=& ...

  9. HTML控件ID和NAME属性及在CS页面获得.ASPX页面中HTML控件的值

    <转载>来自网络 一.ID是在客户端脚本里用!NAME是用于获取提交表单的某表单域信息,在form里面,如果不指定Name的话,就不会发送到服务器端,所以有name属性的控件,必须指定na ...

随机推荐

  1. localStorage sessionStorage 用法

    sessionStorage.getItem('key') // 获取 sessionStorage.setItem('key','value') //设置 sessionStorage.remove ...

  2. yidun验证码

    from PIL import Imagefrom selenium import webdriverfrom selenium.webdriver import ActionChainsfrom s ...

  3. Promise实现ajax

    利用Promise实现ajax GET function getAjax(url) { return new Promise((resolved,rejected)=>{ //创建ajax对象 ...

  4. IIS 字符串过长

    jquery.datatable.js---弹窗要用极速模式 <?xml version="1.0" encoding="utf-8"?><c ...

  5. javascript 数组的简单应用

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  6. python url监控 并邮件报警

    import timeimport requestsimport smtplibfrom email.mime.text import MIMETextimport datetime def Send ...

  7. 【jira】java.lang.OutOfMemoryError: GC overhead limit exceeded

    登录JIRA访问打开缓慢,查询日志出现下述提示:java.lang.OutOfMemoryError: GC overhead limit exceeded 修改setenv.sh文件中的JVM配置, ...

  8. Prometheus

    官方网址:https://prometheus.io/ GitHub网址:https://github.com/prometheus/prometheus 软件下载地址:https://prometh ...

  9. Going to university is supposed to be a mind-broadening experience.

    Going to university is supposed to be a mind-broadening experience. That assertion is presumably mad ...

  10. Java运行时数据区

    目录 1. 概述 2. Java内存结构 3. 程序计数器 4. Java虚拟机栈 5. 本地方法栈 6. 堆 7. 方法区 8. 运行时常量池 9. 直接内存 10. 总结 1. 概述 作为日常的J ...