gpt4 book ai didi

c# - 在 C# Windows 应用程序中查找打开的表单

转载 作者:可可西里 更新时间:2023-11-01 12:42:12 25 4
gpt4 key购买 nike

我正在使用此函数关闭现有表单并打开一个新表单。

如果没有现存的表单,它会抛出错误。

错误:

目标:System.Object MarshaledInvoke(System.Windows.Forms.Control, System.Delegate, System.Object[], Boolean)

消息:在创建窗口句柄之前,无法对控件调用 Invoke 或 BeginInvoke。

堆栈:在 System.Windows.Forms.Control.MarshaledInvoke(控制调用方、委托(delegate)方法、对象[] args、 bool 同步)

因此需要在关闭表单之前检查是否有任何打开的表单以避免错误。怎么办?

    static public void NewMainForm(Form main, bool ClosePreviousMain)
{
if (main != null)
{
Global.ActiveForm = main.Text;
if (ClosePreviousMain & MyContext.curMain != null)
{
MyContext.curMain.FormClosed -= new FormClosedEventHandler(main_FormClosed);
//Need to check for any form active and then close the form.
MyContext.curMain.Invoke(new Action(MyContext.curMain.Dispose));
}
MyContext.curMain = main;
MyContext.curMain.FormClosed += new FormClosedEventHandler(main_FormClosed);
MyContext.curMain.ShowDialog();
}
}

最佳答案

您可以使用 Application.OpenForms收藏。

关于c# - 在 C# Windows 应用程序中查找打开的表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1108368/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com