我有一个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();
}
答案 0 :(得分:1)
您需要将实例传递给类,而不是使用Form.ActiveForm
,因此它可以调用whatever.updateLabel()
并将whatever
作为实例。
答案 1 :(得分:0)
返回数据的正确方法是在worker类中实现一个方法,并在Form的成员变量或配置参数中获取返回值。根据类执行的任务,任务可能需要在后台工作线程中执行,然后更新Form的成员变量。有关如何在后台线程中运行任务的更多信息,请查看MSDN。
参考文献&有用的页面: