0

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

我就是这样做的,但它仅在表单处于活动状态时才部分起作用。

这是我在课堂上的内容:

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

2 回答 2

1

而不是使用Form.ActiveForm您需要将实例传递给类,以便它可以作为实例调用whatever.updateLabel()whatever

于 2012-07-20T21:30:32.883 回答
0

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

参考资料和有用的页面:

于 2012-08-20T17:25:42.857 回答