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.

Preguntas similare

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.
Respuesta Responder a este mensaje
#2 Pintamono
31/03/2009 - 17:55 | Informe spam
On 31 mar, 05:48, "Albert" wrote:
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.



gracias, me funciono con esta pequeña modificacion
Form2.Icon = (Icon)this.Icon.Clone();

ahora debo esperar que testing haga lo que corresponde y me avise si
funciona jeje

Muchas gracias.
Respuesta Responder a este mensaje
#3 Pintamono
29/05/2009 - 23:50 | Informe spam
On 31 mar, 05:48, "Albert" wrote:
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 elicono
>A los formularios hijos les asigno eliconodel 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)

>Aliconono 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 eliconopor defecto de
>los forms y no eliconoque yo defini, luego si me cambio de ventana
>me aparece eliconodefinido por mi...

>Que me falta para hacer que funcione este tema?

>Gracias.



Muchas gracias, funciono perfecto...
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida