从单独的线程和类访问WinForms控件

时间:2013-10-17 10:39:46

标签: c# winforms

我有一个名为“tables”的类,而winform“Form1”在表单上是一个名为“table3”的按钮。 “tables”类中的代码在一个单独的线程中运行,需要访问主窗体上的按钮,这就是我所拥有的:

Form1.ActiveForm.BeginInvoke(
(Action)(() =>
{
    Form1.ActiveForm.Controls["table3"].Text = "test";
}));

我收到一个空引用异常..按钮的名称是正确的。还有一些其他问题,我不确定它是什么:/

2 个答案:

答案 0 :(得分:0)

试试这个:

Invoke(new Action<object>((args) =>
{
    Form1.ActiveForm.Controls["table3"].Text = "test";
}));

答案 1 :(得分:0)

如果您收到NullReferenceException,则引用为null。因此,Form1.ActiveForm == nullForm1.ActiveForm.Controls == nullForm1.ActiveForm.Controls["table3"] == null

我认为Form1是类的名称,ActiveForm是静态属性。