从另一个窗体调用问题我有两种形式和1个单例类。我在formA的btn_A_Click中初始化单例类。使用System.Window.Forms.Invoke(委托)
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();
}
}
这是我的formB。
public partial class frmB : Form
{
}
但从frB.Invoke(new EventHandler(DisplayFrmB));
方法,它抛出以下异常:
调用或BeginInvoke可直到窗口句柄已创建不能在一个控件调用。
我找不出这个问题,请帮助或建议我,如果我错过任何东西。
编辑
下面的结构是我当前的项目正在显示一个表格的方式。这是由VB.NET完成的,我需要在使用C#的新项目中使用类似的东西。我看到了Invoke函数,它指向一个事件,然后指向一个函数。在该函数中,它只是使Form.Visible = true和Form.Refresh。但为了理解,我只是尝试了一个POc并遵循相同的步骤,但尚未解决。
您可以发布您尝试复制的最低vb.net代码吗? – YK1