Icono en WinForm

23/03/2009 - 17:56 por Pintamono | Informe spam
Que tal,

Estoy dando mis primeros pasos en WinForm y tengo un "pequeño"
problema

He creado un Form MDI y le he definido todas sus propiedades, una de
ellas es el icono
A los formularios hijos les asigno el icono del padre.
El tema es que en algunos casos, generalmente WinXP cuando se cierra
una ventana hija arroja un error...

Este es el error:

Consulte el final de este mensaje para obtener más detalles sobre cómo
invocar a la depuración Just-In-Time (JIT) en lugar de a este cuadro
de diálogo.


************** Texto de la excepción **************
System.ObjectDisposedException: No se puede obtener acceso al objeto
eliminado. Nombre del objeto: 'Icon'.
en System.Drawing.Icon.get_Handle()
en System.Drawing.Icon.get_Size()
en System.Drawing.Icon.ToBitmap()
en System.Windows.Forms.MdiControlStrip.GetTargetWindowIcon()
en System.Windows.Forms.MdiControlStrip..ctor(IWin32Window target)
en System.Windows.Forms.Form.UpdateMdiControlStrip(Boolean
maximized)
en System.Windows.Forms.Form.UpdateToolStrip()
en System.Windows.Forms.Form.OnMdiChildActivate(EventArgs e)
en System.Windows.Forms.Form.ActivateMdiChildInternal(Form form)
en System.Windows.Forms.Form.WmMdiActivate(Message& m)
en System.Windows.Forms.Form.WndProc(Message& m)
en System.Windows.Forms.Control.ControlNativeWindow.OnMessage
(Message& m)
en System.Windows.Forms.Control.ControlNativeWindow.WndProc
(Message& m)
en System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32
msg, IntPtr wparam, IntPtr lparam)


Al icono no le hago nada especial, es mas, no le hago nada, solo lo
asigno...


Otro problema que tengo es que si abro una ventana hija en modo
maximizado, en el menu del padre me aparece el icono por defecto de
los forms y no el icono que yo defini, luego si me cambio de ventana
me aparece el icono definido por mi...

Que me falta para hacer que funcione este tema?

Gracias.
 

Leer las respuestas

#1 Albert
31/03/2009 - 11:48 | Informe spam
Hola,

Si lo que haces es:
Form2 frm = new Form2();
Form2.Icon = this.Icon;

Lo que te está ocurriendo es que el objeto pertenece al formulario principal. Es este caso puedes probar con:
Form2 frm = new Form2();
Form2.Icon = this.Icon.Clone();

Así creas una instancia de objeto sin propietario, y se la asignas al formulario hijo.

Saludos,

Albert

Que tal,

Estoy dando mis primeros pasos en WinForm y tengo un "pequeño"
problema

He creado un Form MDI y le he definido todas sus propiedades, una de
ellas es el icono
A los formularios hijos les asigno el icono del padre.
El tema es que en algunos casos, generalmente WinXP cuando se cierra
una ventana hija arroja un error...

Este es el error:

Consulte el final de este mensaje para obtener más detalles sobre cómo
invocar a la depuración Just-In-Time (JIT) en lugar de a este cuadro
de diálogo.


************** Texto de la excepción **************
System.ObjectDisposedException: No se puede obtener acceso al objeto
eliminado. Nombre del objeto: 'Icon'.
en System.Drawing.Icon.get_Handle()
en System.Drawing.Icon.get_Size()
en System.Drawing.Icon.ToBitmap()
en System.Windows.Forms.MdiControlStrip.GetTargetWindowIcon()
en System.Windows.Forms.MdiControlStrip..ctor(IWin32Window target)
en System.Windows.Forms.Form.UpdateMdiControlStrip(Boolean
maximized)
en System.Windows.Forms.Form.UpdateToolStrip()
en System.Windows.Forms.Form.OnMdiChildActivate(EventArgs e)
en System.Windows.Forms.Form.ActivateMdiChildInternal(Form form)
en System.Windows.Forms.Form.WmMdiActivate(Message& m)
en System.Windows.Forms.Form.WndProc(Message& m)
en System.Windows.Forms.Control.ControlNativeWindow.OnMessage
(Message& m)
en System.Windows.Forms.Control.ControlNativeWindow.WndProc
(Message& m)
en System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32
msg, IntPtr wparam, IntPtr lparam)


Al icono no le hago nada especial, es mas, no le hago nada, solo lo
asigno...


Otro problema que tengo es que si abro una ventana hija en modo
maximizado, en el menu del padre me aparece el icono por defecto de
los forms y no el icono que yo defini, luego si me cambio de ventana
me aparece el icono definido por mi...

Que me falta para hacer que funcione este tema?

Gracias.

Preguntas similares