System.Windows.Forms.d中发生了类型为“System.ObjectDisposedException”的未处理异常

时间:2014-01-23 14:15:43

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

我正在使用visual studio 2012 C#windows表单应用程序。我只是通过button_click事件设置我的表单流,即form1有一个按钮单击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());



        }
    }
}

1 个答案:

答案 0 :(得分:1)

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