Tôi đang sử dụng chức năng này để đóng biểu mẫu hiện có và mở biểu mẫu mới.Tìm biểu mẫu đang mở trong ứng dụng C# windows
Nếu không có hình thức ngoại lệ, nó sẽ phát ra lỗi.
Lỗi:
Target: System.Object MarshaledInvoke (System.Windows.Forms.Control, System.Delegate, System.Object [], Boolean)
nhắn: Gọi hoặc BeginInvoke không thể được gọi vào một điều khiển cho đến khi tay cầm cửa sổ được tạo ra.
Stack: tại System.Windows.Forms.Control.MarshaledInvoke (Control gọi, Đại Diện phương pháp, Object [] args, Boolean đồng bộ)
SO cần phải kiểm tra xem có bất kỳ hình thức mở trước khi đóng cửa các hình thức để tránh sự lỗi. Làm sao?
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();
}
}