3

我创建了一个自定义表单,其中包含几个按钮和一个文本框。

此自定义表单由我在 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;

        }

我不确定如何开始对此进行故障排除。我做了相当多的研究,但不幸的是没有找到太多。我确信问题可能在于我创建了一个没有经验的自定义表单,并且有一些我没有做过或不知道的“内务管理”或“最佳实践”。

有人对此有见识吗?

4

1 回答 1

0

我在这里猜测了一下,但是 HResult 的COMException意思是Object Required,所以,当你调用CommandBarButton.Delete两件事之一时是错误的。

您已经处理了按钮实例,或者您应该传递true或传递falseDelete调用。

该按钮在从工具栏中删除之前不应被释放,并且当它被释放时,您可能需要执行 aMarshal.ReleaeComObject以正确取消引用它。

于 2012-08-28T15:16:11.950 回答