2012-07-20 28 views
0

我有一个Form1,我在另一个类中做了一些处理。 将信息输出到Form1 textBox9的正确方法是什么?什么是从另一个类输出数据到Form的正确方法

这就是我的做法,但只有当表单处于活动状态时才能部分工作。

这是我在我的课:

var form = Form.ActiveForm as Form1; 
if (form != null) 
{ 
form.updateLabel("DBadd[" + counter + "]" + NAME2); 
} 

这是我在我的Form1中:

delegate void updateStatus(String value); 
    public void updateLabel(String value) 
    { 
     if (textBox9.InvokeRequired) 
     { 
      updateStatus del = new updateStatus(updateCodemicroLabel); 
      textBox9.Invoke(del, new object[] { value }); 
     } 
     else 
     { 
      { 
       textBox9.Text = value; 
      } 
     } 
    } 

这是我的课怎么叫:

private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) 
    { 
     new className().runTask(); 
    } 
+4

据透露,'textBox9'是一个可怕的(默认)名称。你应该真的把你的控件重命名为有意义的东西 – ThiefMaster 2012-07-20 21:28:39

+1

第一个块中的“class”是如何实例化的? – 2012-07-20 21:33:59

回答

1

您不需要使用Form.ActiveForm,而需要将实例传递给该类,以便可以使用0123调用是实例。

0

返回数据的正确方法是在worker类中实现一个方法,并在Form的成员变量或配置参数中获取返回值。根据类执行的任务,任务可能需要在后台工作线程中执行,然后更新窗体的成员变量。有关如何在后台线程中运行任务的更多信息,请查看MSDN。

参考&有用的网页:

相关问题