我创建了一个自定义表单,其中包含几个按钮和一个文本框。
这个自定义表单是通过我在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;
}
我不确定如何开始对此进行故障排除。我已经做了很多研究,但不幸的是,我没有发现太多。我确定问题可能出在我没有经验的情况下创建了自定义表单,并且有一些我没有做过或不知道的“内务处理”或“最佳做法”。
有人对此有见识吗?
最佳答案
我在这里有点猜测,但是COMException
的HResult表示Object Required,
因此,当您调用 CommandBarButton.Delete
时,有两件事是错误的。
您已经处置了按钮实例,或者应该将true
或false
传递给Delete
调用。
在从工具栏上删除按钮之前,不应释放该按钮,并且在释放按钮后,您可能需要执行 Marshal.ReleaeComObject
才能正确取消引用它。
关于c# - C#自定义表单在退出时抛出COMException,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12162203/