我有一个有两种形式的Windows应用程序。我试图实现这个目标:
当显示第二个表单时,我希望隐藏第一个表单。
我试过了:
public Executor()
{
InitializeComponent();
Form1.ActiveForm.Hide();
}
但是在开始整个应用程序之前, “跨线程操作无效控件的结果是从” 上创建的线程以外的线程访问的。
我怎样才能实现我的目标?同样在我后面的代码中,我尝试关闭代码Form1.ActiveForm.Close();
任何想法都会非常感激..
答案 0 :(得分:1)
使用委托在主题表单的主题上调用Close方法:
private delegate void BlankDelegate();
private void CloseForm()
{
if (this.InvokeRequired)
{
this.Invoke(new BlankDelegate(this.CloseForm));
}
else
{
this.Close();
}
}
答案 1 :(得分:0)
您无法从运行该窗体的UI线程的线程以外的线程访问UI控件(或其父窗体)
试试这个 -
this.Invoke((Action)delegate { Form1.ActiveForm.Hide(); });