尝试隐藏窗体时,跨线程操作无效
本文关键字:线程 操作 无效 隐藏 窗体 | 更新日期: 2023-09-27 18:30:44
我有一个有2个表单的Windows应用程序。我正在尝试实现这一目标:
显示第二个窗体时,我希望隐藏第一个窗体。
我试过这样的:
public Executor()
{
InitializeComponent();
Form1.ActiveForm.Hide();
}
但在启动整个应用程序之前,会导致"跨线程操作不是从创建它的线程以外的线程访问的有效控件"。
我怎样才能实现我所说的?同样在我以后的代码中,我正在尝试关闭如上所示的代码Form1.ActiveForm.Close();
任何想法将不胜感激。
使用委托在主题窗体的线程上调用 Close 方法:
private delegate void BlankDelegate();
private void CloseForm()
{
if (this.InvokeRequired)
{
this.Invoke(new BlankDelegate(this.CloseForm));
}
else
{
this.Close();
}
}
不能从运行该窗体的 UI 线程的线程以外的线程访问 UI 控件(或其父窗体)
试试这个——
this.Invoke((Action)delegate { Form1.ActiveForm.Hide(); });