我有两种形式和 1 个单例类。我正在初始化 formA 的 btn_A_Click 中的单例类。
public partial class frmA : Form
{
public frmA()
{
InitializeComponent();
frmB frmB;
}
private void btn_A_Click(object sender, EventArgs e)
{
SessionMgmt.GetInstance().StartFormB();
}
}
这是我的单例类,在这里我尝试使用 Forms.Invoke() 方法。
public class SessionMgmt
{
static SessionMgmt _sessinMgr;
frmB frB;
private SessionMgmt()
{
frB = new frmB();
}
public static SessionMgmt GetInstance()
{
if (_sessinMgr != null)
return _sessinMgr;
else
{
_sessinMgr = new SessionMgmt();
return _sessinMgr;
}
}
public bool StartFormB()
{
frB.Invoke(new EventHandler(DisplayFrmB));
return true;
}
private void DisplayFrmB(Object o, EventArgs e)
{
frB.Visible = true;
frB.Refresh();
}
}
这是我的表格B。
public partial class frmB : Form
{
}
但是从frB.Invoke(new EventHandler(DisplayFrmB));
方法中它抛出了以下异常:
在创建窗口句柄之前,不能对控件调用 Invoke 或 BeginInvoke。
我无法弄清楚这个问题,如果我错过了什么,请帮助或建议我。
编辑
以下结构是我当前项目显示下一个表单的方式。它是由 VB.NET 完成的,我需要在使用 C# 的新项目中使用类似的东西。我看到了 Invoke 函数,它指向一个事件,然后指向一个函数。在该函数中,它只是使 Form.Visible=true 和 Form.Refresh。但为了理解,我只是尝试了一个 POc 并遵循相同的步骤,但尚未解决。