0
我正在使用下面的函数关闭现有窗体并打开新窗体。 当代码试图关闭现有的形式,我提示以下错误:重定向到Windows应用程序c中的另一个窗体#
错误:
{System.InvalidOperationException:跨线程操作无效:控制“屏幕保护”从非线程以外的线程访问它创建于。
代码:
public static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
StartThread();
Application.Run(new MyContext(new Screensaver()));
}
public class MyContext : ApplicationContext
{
static private Form curMain = null;
public MyContext(Form main)
{
MyContext.NewMainForm(main, false);
}
static public void NewMainForm(Form main, bool ClosePreviousMain)
{
try
{
if (main != null)
{
if (ClosePreviousMain & MyContext.curMain != null)
{
MyContext.curMain.FormClosed -= new FormClosedEventHandler(main_FormClosed);
MyContext.curMain.Close();
}
MyContext.curMain = main;
MyContext.curMain.FormClosed += new FormClosedEventHandler(main_FormClosed);
MyContext.curMain.Show();
}
}
catch (Exception ex)
{
ExceptionHandler.writeToLogFile(System.Environment.NewLine + "Message : " + ex.Message.ToString() + System.Environment.NewLine + "Stack : " + ex.StackTrace.ToString());
}
}
static private void main_FormClosed(object sender, FormClosedEventArgs e)
{
Application.Exit();
}
}
嗨弗雷德里克·莫克, 关闭形式的作品般的魅力吧。 但在关闭现有表单后显示表单时出现问题。 Wats发生的是,我没有得到任何异常。相反,它打开一个新的过程,而不是打开表单。 进程名称与新表格名称相同。 谢谢, – Anuya 2009-06-25 09:22:50