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

本文关键字:访问 WinForms 控件 单独 线程 | 更新日期: 2023-09-27 18:35:56

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

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

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

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

试试这个:

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

如果你得到一个 NullReferenceException,那么引用就是空的。所以要么Form1.ActiveForm == null,要么Form1.ActiveForm.Controls == null,要么Form1.ActiveForm.Controls["table3"] == null

我假设Form1是类的名称,ActiveForm是静态属性。