我有这个 C# 项目...如果我在主窗体中打开了一个 formdialog,然后单击该应用程序所在的 formdialog 上的一个按钮,它会关闭,然后因名义异常而崩溃。消息是“无法访问已处置的对象”,它位于主 program.cs 文件中。
formdialog 关闭后,它再次开始处理主窗体,并运行 this.Close()。如果我改为 Application.Exit() ,它不会崩溃,但也不会关闭,它只是保持打开状态,我不明白。
直到添加了一些与注册表相关的代码后,我才开始遇到这个问题,但我不记得确切的时间,也不明白这会如何影响这一点。
我的错误在 Application.Run() 行这里:
static class Program
{
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new GettingStarted());
}
}
主要形式只是让用户找一个sqlite数据库用程序打开。一旦他们选择了一个,它就会运行 opendb() 并进入下一个对话框。一旦对话框结束,如果主窗体没有告诉它保持打开状态,它就会退出。
private void opendb(string path)
{
if (path == "") { return; }
Registry.CurrentUser.SetValue("HKEY_CURRENT_USER\\Software\\JPro\\RecentDBPath", path);
this.Hide(); MainJView j = new MainJView(path); j.Location = this.Location; j.ShowDialog();
if (j.return2start == 1)
{
this.Location = j.Location; this.Show();
}
else if (j.return2start == 2)
{
this.Location = j.Location; this.Show();
this.form_selectdb(null, null);
}
else
{
this.Close();
}
}