3 votos

C# Custom Form lanzando COMException al salir

He creado un formulario personalizado que tiene un par de botones y un cuadro de texto.

Este formulario personalizado se abre mediante un botón de evento de clic que he creado en un complemento de Microsoft outlook en el que estoy trabajando unido a una "cinta". (No estoy seguro si esto importa, no hay problema aquí).

En el formulario de Windows, el primer botón simplemente guarda el contenido del archivo de texto en el disco.

El otro botón intenta cerrar el formulario. En el evento de clic de este botón he probado las siguientes dos líneas, separadas y juntas

this.Close(); y this.Dispose();

Cuando uso este botón o la salida del formulario (la 'x' situada en la parte superior derecha de un formulario de Windows) recibo el siguiente error,

El usuario no ha gestionado la excepción COM Excepción de HRESULT: 0x800A01A8

Cuando este error es lanzado, me lleva a los archivos 'Connect.cs' siguiente método,

public void OnBeginShutdown(ref System.Array custom)
        {

            this.toolbarButton.Delete(System.Reflection.Missing.Value);
            this.toolbarButton = null;

        }

No estoy seguro de cómo empezar a solucionar esto. He investigado bastante pero desgraciadamente no he encontrado mucho. Estoy seguro de que el problema podría ser el hecho de que he creado un formulario personalizado sin experiencia y hay algunos 'housekeeping' o 'mejores prácticas' que no he hecho o son conscientes de.

¿Alguien tiene idea de esto?

0voto

Jodrell Puntos 14205

Estoy adivinando un poco aquí, pero que HResultado para un COMException significa Objeto requerido , Por lo tanto, cuando usted está llamando a CommandBarButton.Delete una de dos cosas está mal.

O bien ya ha dispuesto la instancia del botón o debería pasar true o false a la Delete llamar.

El botón no debería ser eliminado hasta después de haber sido retirado de la barra de herramientas, y cuando se elimine puede ser necesario hacer un Marshal.ReleaeComObject para desreferenciarlo correctamente.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X