C#WinForms事件FormClosing not slove无法访问已处置对象异常

时间:2017-05-20 17:58:08

标签: c# winforms

在我的项目中,我以编程方式创建新表单并将其显示为对话框,所有时间都会出现异常:

  

System.ObjectDisposedException:'无法访问已处置的对象。'

我尝试使用 ClosingEvent ,但这在我的项目中无效。

这是我的代码:

private void productNameTextBox_KeyDown(object sender, KeyEventArgs e)
{
        using (Form productDialog = new Form())
        {
            productDialog.FormClosing += new FormClosingEventHandler(productDialog_FormClosing);

            productDialog.ShowDialog();
        }
}


  private void productDialog_FormClosing(object sender, FormClosingEventArgs e)
    {

        productDialog.Hide();
        productDialog.Parent = null;

        MessageBox.Show("Triggered");     // Showed on close

        e.Cancel = true; //hides the form, cancels closing event

    }

当我关闭“ X ”上打开的对话框并再次尝试打开它时,我会遇到异常。感谢 e.Cancel 无法正常工作但显示了消息框。 我做错了什么?

1 个答案:

答案 0 :(得分:1)

您已撰写using (Form productDialog = new Form()),因此只要您的productNameTextBox_KeyDown完成其任务,我们就会处理productDialog表单。你可以在这里阅读MSDN