在我的项目中,我以编程方式创建新表单并将其显示为对话框,所有时间都会出现异常:
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 无法正常工作但显示了消息框。 我做错了什么?
答案 0 :(得分:1)
您已撰写using (Form productDialog = new Form())
,因此只要您的productNameTextBox_KeyDown
完成其任务,我们就会处理productDialog表单。你可以在这里阅读MSDN