首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C#在后台工作者工作事件中获取TextBox值

C#在后台工作者工作事件中获取TextBox值
EN

Stack Overflow用户
提问于 2013-04-02 17:32:24
回答 6查看 12.6K关注 0票数 5

在我的windows窗体应用程序中,我有一个textboxbackgroundworker组件。在backgroundworker的事件中,我试图访问textbox的值。我该怎么做呢?当我尝试访问textbox的值时,在dowork事件处理程序代码中得到以下异常:

代码语言:javascript
复制
Cross-thread operation not valid: Control 'txtFolderName' accessed from a thread other than the thread it was created on`
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2013-04-02 17:34:09

你只能在GUI线程中访问textbox / form controls,你可以这样做。

代码语言:javascript
复制
if(txtFolderName.InvokeRequired)
{
    txtFolderName.Invoke(new MethodInvoker(delegate { name = txtFolderName.text; }));
}
票数 6
EN

Stack Overflow用户

发布于 2013-04-02 17:38:04

尝尝这个

代码语言:javascript
复制
  txtFolderName.Invoke((MethodInvoker)delegate
            {
                string strFolderName = txtFolderName.Text;
            });  
票数 3
EN

Stack Overflow用户

发布于 2013-04-02 17:33:58

您需要使用MethodInvoker。像这样:

代码语言:javascript
复制
BackgroundWorker worker = new BackgroundWorker();
worker.DoWork += delegate(object sender, DoWorkEventArgs e)
 {
       MethodInvoker mi = delegate { txtFolderName.Text = "New Text"; };
       if(this.InvokeRequired)
           this.Invoke(mi);
 };
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15760654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档