gpt4 book ai didi

C# 自定义窗体在退出时抛出 COMException

转载 作者:行者123 更新时间:2023-11-30 18:37:50 24 4
gpt4 key购买 nike

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

此自定义表单由我在 Microsoft Outlook 加载项上创建的单击事件按钮打开,我正在处理该加载项并附加到“功能区”。 (不确定这是否重要,这里没问题)。

在 windows 窗体上,第一个按钮只是将文本文件的内容保存到磁盘。

另一个按钮试图关闭表单。在此按钮单击事件中,我尝试了以下两行,分别和一起

这个.关闭();和 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两件事中的一件是错误的。

要么您已经释放了按钮实例,要么您应该将 truefalse 传递给 Delete 调用。

按钮在从工具栏中移除之前不应被释放,当它被释放时你可能需要做一个Marshal.ReleaeComObject。正确地取消引用它。

关于C# 自定义窗体在退出时抛出 COMException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12162203/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com