【问题标题】:C# WinForms event FormClosing not slove Cannot access a disposed object exceptionC# WinForms 事件 FormClosing not slove 无法访问已释放对象异常
【发布时间】:2017-05-20 17:58:08
【问题描述】:

在我的项目中,我以编程方式创建新表单并将其显示为对话框,但始终出现异常:

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 不起作用,但会显示消息框。 我做错了什么?

【问题讨论】:

    标签: c# winforms


    【解决方案1】:

    你已经写了using (Form productDialog = new Form()),所以一旦你的productNameTextBox_KeyDown 完成它的部分,productDialog 表单就会被处理掉。你可以在这里阅读MSDN

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-02
      • 2019-01-28
      相关资源
      最近更新 更多