This question está cerca de lo que me interesa, pero no del todo.Arrastrar y soltar proceso cruzado de tipo de objeto personalizado en WinForms C#
Tengo una aplicación .NET WinForms escrita en C#. Tengo un control ListView
que muestra una matriz de objetos C#. Lo he conectado para que pueda arrastrar/soltar estos elementos de vista de lista en una forma diferente en la misma aplicación, y pasa correctamente la matriz de objetos (tipo Session
) al manejador de soltar para esa otra forma.
Sin embargo, ahora quiero admitir la función de arrastrar/soltar entre procesos donde ejecuto varias instancias de mi aplicación. Este aparece que va a funcionar (por ejemplo, GetDataPresent
tiene éxito), pero finalmente arroja una excepción cuando en realidad intento recuperar los datos. No puedo convertir object[]
en Session[]
.
if (e.Data.GetDataPresent("Fiddler.Session[]"))
{
Session[] oDroppedSessions;
try
{
oDroppedSessions = (Session[])e.Data.GetData("Fiddler.Session[]");
}
catch (Exception eX)
{ // reaches here
}
}
Alguien sabe si hay que aplicar ISerializable
para mis objetos con el fin de hacer este trabajo? Por lo general, simplemente lo intento, pero la implementación de ISerializable
para esta clase sería bastante no trivial, y me preocupa que pueda haber extraños efectos secundarios de hacerlo.
ACTUALIZACIÓN: La implementación de ISerializable
no help-- el método nunca es llamado. Del mismo modo, agregar el atributo Serializable
a la clase no tiene ningún impacto. ¿Alguna otra idea?
Agregue una línea 'Console.WriteLine (string.Format ("Excepción capturada. Los detalles son {0}", eX.ToString()));' en el bloque de captura. ¿Cuál sería el mensaje? – t0mm13b
"no se puede lanzar el objeto [] a la sesión []" – EricLaw