【问题标题】:An unhandled exception of type 'System.ObjectDisposedException' occurred in System.Windows.Forms.dSystem.Windows.Forms.d 中出现“System.ObjectDisposedException”类型的未处理异常
【发布时间】:2014-01-23 14:15:42
【问题描述】:

我正在使用 Visual Studio 2012 C# Windows 窗体应用程序。我只是通过 button_click 事件设置我的表单流,即 form1 有一个按钮 Click Next,它将关闭当前表单并打开一个新表单 Form2。 Form2 有一个“单击下一步”按钮,该按钮可用于 Form3,依此类推。在我的表单中,我在需要的地方使用了 form1.show() 和 form1.close()。请查看此内容并欢迎回复。我正面临一个异常,因为 System.Windows.Forms.dll 中发生了“System.ObjectDisposedException”类型的未处理异常附加信息:无法访问已处置的对象。
我的 program.cs 在这里

namespace WindowsFormsApplication1
{
    static class Program
    {

        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Validate_Form());



        }
    }
}

【问题讨论】:

  • 这绝对不是您的全部代码。贴出异常产生的代码。
  • 好像您正在构建某种向导。搜索...菊花链形式是实现效果的笨拙方式。

标签: c# .net winforms forms visual-studio-2012


【解决方案1】:

在 Winform 应用程序中,您在 Main 方法中指定的窗口是您应用程序的主窗体,它与操作系统 (Windows) 中的应用程序进程处理程序相关联。进程可以分为两种类型。窗口进程和无窗口进程。在窗口化进程中,应用程序中映射到 Windows Window 对象的所有其他窗体将是应用程序主窗体的直接或间接子窗体。 如果您正在设计一个看起来就是您正在做的向导,我的建议是将您的主窗体作为一个容器,并在子窗体加载到您的主窗体时执行向导的步骤。例如,您有一个两步向导:在这种情况下,您将需要 3 个表单;主要形式和2个步骤。主窗体将有标题,底部区域有导航/控制按钮(下一步/完成/取消),在窗体的中间部分插入一个加载 2 个步骤的容器。您需要将步骤的属性设置为 Window = none 和 ChildWindow = true。现在,当您加载主窗体时,它会通过在主窗体的容器对象中设置正确的子/父关系来将步骤 1 加载到其容器区域中。一旦用户单击下一步,然后您加载第二个表单,隐藏第一个表单,然后激活第二个表单。我想你明白了。这就是实际向导的设计方式。如果您有任何其他问题/疑虑,请告诉我。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-22
    • 2021-01-14
    • 2014-06-03
    • 2011-10-18
    • 2014-03-09
    • 1970-01-01
    相关资源
    最近更新 更多