從另一個窗體調用問題我有兩種形式和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