【发布时间】:2012-08-23 03:14:03
【问题描述】:
我创建了一个自定义表单,其中包含几个按钮和一个文本框。
此自定义表单由我在 Microsoft Outlook 加载项上创建的单击事件按钮打开,我正在处理该加载项附加到“功能区”。 (不确定这是否重要,这里没问题)。
在 windows 窗体上,第一个按钮只是将文本文件的内容保存到磁盘。
另一个按钮尝试关闭表单。在此按钮单击事件中,我尝试了以下两行,分开和一起
this.Close();和 this.Dispose();
当我使用此按钮或窗体退出(位于 windows 窗体右上角的“x”)时,我收到以下错误,
COMException 未被用户处理 HRESULT 异常:0x800A01A8
当抛出此错误时,它会将我带到以下方法的“Connect.cs”文件,
public void OnBeginShutdown(ref System.Array custom)
{
this.toolbarButton.Delete(System.Reflection.Missing.Value);
this.toolbarButton = null;
}
我不确定如何开始解决此问题。我做了相当多的研究,但不幸的是没有找到太多。我确信问题可能在于我创建了一个没有经验的自定义表单,并且有一些我没有做过或不知道的“内务管理”或“最佳实践”。
有人对此有见解吗?
【问题讨论】:
-
这段代码在运行两次时会爆炸。并非完全不可能,因为 Form.Close() 通常已经包含了一个 dispose。为了安全起见,添加
if (this.toolbarButton != null)。
标签: c# exception error-handling ms-office add-in