在我的程序中,我有两种形式,formLogin
和formStudent
. 它formLogin
通过一个名为 的外部类与服务器建立连接Connection
。我正在尝试将连接传递给formStudent
、显示formStudent
和隐藏formLogin
. 该类Connection
有两个用于表单的构造函数,因此我不会在任何地方创建表单的新实例,并且它继承了 Form。
我试图从Connection
类中调用的方法给了我评论中显示的错误:
public void SuccessfulLogin()
{
if (this.InvokeRequired)
{
this.Invoke(new Action(() => SuccessfulLogin()));
/*
**Invoke or BeginInvoke cannot be called on a control until the window
handler has been created**
*/
}
else
{
formStudent.connection = formLogin.newConnection;
formLogin.Hide();
formStudent.Show();
}
}
我尝试添加if
语句以查看句柄是否是通过创建的if (IsHandleCreated)
,但是通过使用断点,似乎根本没有运行该方法中的任何代码。我也试过把这个方法放在formLogin
类和Connection
类中,没有任何变化。
更新:
非常感谢King King为我指明了正确的方向。我将代码更改为:
this.CreateHandle();
this.Invoke(new MethodInvoker(SuccessfulLogin));
和sucessfulLogin
方法:
public void SuccessfulLogin()
{
if (this.InvokeRequired)
{
this.Invoke(new Action(() => SuccessfulLogin()));
}
else
{
formStudent = new frmStudent();
formStudent.connection = formLogin.newConnection;
formLogin.Hide();
formStudent.Show();
}
}