3

いくつかのボタンとテキスト ボックスを持つカスタム フォームを作成しました。

このカスタム フォームは、「リボン」に接続された作業中の Microsoft Outlook アドインで作成したクリック イベント ボタンによって開かれます。(これが問題かどうかはわかりませんが、ここでは問題ありません)。

Windows フォームでは、最初のボタンは単にテキスト ファイルの内容をディスクに保存します。

もう 1 つのボタンは、フォームを閉じようとします。このボタンクリックイベントでは、次の2行を別々に試しました

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

私はここで少し推測していますが、 a の HResultはObject RequiredCOMExceptionを意味します。したがって、2 つのうちの 1 つを呼び出すときは間違っています。CommandBarButton.Delete

ボタンインスタンスを既に破棄しているか、trueまたは呼び出しに渡す必要falseがあります。Delete

Marshal.ReleaeComObjectボタンは、ツールバーから削除されるまで破棄しないでください。破棄する場合は、正しく逆参照する必要がある場合があります。

于 2012-08-28T15:16:11.950 に答える