Problema con icono de la bandeja del sistema (NotifyIcon)

19/02/2004 - 19:31 por Kasiyas | Informe spam
Hola a todos,

Tengo un pequeño problema con una aplicación en c# a la hora de minimizarla
en un icono de notificación en la bandeja del sistema.
El caso es que cuando he maximizado la ventana de la aplicación (Form1) y a
continuación la minimizo para ocultarla de forma que quede solo el icono de
notificación, cuando la vuelvo a restaurar haciendo doble click sobre dicho
icono de notificación, se vuelve a restaurar maximizada (hasta aqui todo
bien), pero si intento devolverla al tamaño normal (pulsando otra vez el
controlbox de Maximizar/Restaurar de la barra de titulo de la ventana Form1)
el tamaño de la misma se ve reducido a la barra de título. Y por más que
maximize y restaure, siempre se queda de ese tamaño. Vamos que no hay forma
de dejarla en el estado normal (original), y siempre pasa despues de
haberla: 1º maximizado, 2º minimizado y dejado como icono de notificación,
3º restaurado haciendo doble click en el icono de notificación y 4º intentar
devolverla al tamaño normal.
Espero haberme explicado lo suficientemente claro. El codigo con las
funciones implicadas lo he puesto a continuación.

Muchas gracias de antemano.



private void notifyIcon1_DoubleClick(object sender, System.EventArgs e)
{
Show();
WindowState = FormWindowState.Normal;
Activate();
this.notifyIcon1.Visible = false;
}

private void Form1_Resize(object sender, System.EventArgs e)
{

if( this.WindowState == FormWindowState.Minimized )
{
this.Visible = false;
this.notifyIcon1.Visible = true;
}

}

private void Form1_Closing(object sender,
System.ComponentModel.CancelEventArgs e)
{
this.notifyIcon1.Visible = false;
this.notifyIcon1 = null;

}

Boolean PrimeraVez = true;
private void Form1_Activated(object sender, System.EventArgs e)
{
if( PrimeraVez )
{
PrimeraVez = false;
this.notifyIcon1.Visible = false;
}

}

Preguntas similare

Leer las respuestas

#1 Camilo Villa
19/02/2004 - 21:36 | Informe spam
Hola Kasiyas:

Para solucionar este inconveniente, te sugiero que establezcas la propiedad
MinimunSize al tamaño que aparece registrado en la propiedad Size, que se
supen es el tamaño ideal para tu formulario cuanto este se restablece al
valor original... de resto el código funciona a las mil maravillas...
Felicitaciones, no había visto esto antes... almeno no en mi corta
experiencia...

Me cuentas como te va...

"Kasiyas" escribió en el mensaje
news:
Hola a todos,

Tengo un pequeño problema con una aplicación en c# a la hora de


minimizarla
en un icono de notificación en la bandeja del sistema.
El caso es que cuando he maximizado la ventana de la aplicación (Form1) y


a
continuación la minimizo para ocultarla de forma que quede solo el icono


de
notificación, cuando la vuelvo a restaurar haciendo doble click sobre


dicho
icono de notificación, se vuelve a restaurar maximizada (hasta aqui todo
bien), pero si intento devolverla al tamaño normal (pulsando otra vez el
controlbox de Maximizar/Restaurar de la barra de titulo de la ventana


Form1)
el tamaño de la misma se ve reducido a la barra de título. Y por más que
maximize y restaure, siempre se queda de ese tamaño. Vamos que no hay


forma
de dejarla en el estado normal (original), y siempre pasa despues de
haberla: 1º maximizado, 2º minimizado y dejado como icono de notificación,
3º restaurado haciendo doble click en el icono de notificación y 4º


intentar
devolverla al tamaño normal.
Espero haberme explicado lo suficientemente claro. El codigo con las
funciones implicadas lo he puesto a continuación.

Muchas gracias de antemano.



private void notifyIcon1_DoubleClick(object sender, System.EventArgs e)
{
Show();
WindowState = FormWindowState.Normal;
Activate();
this.notifyIcon1.Visible = false;
}

private void Form1_Resize(object sender, System.EventArgs e)
{

if( this.WindowState == FormWindowState.Minimized )
{
this.Visible = false;
this.notifyIcon1.Visible = true;
}

}

private void Form1_Closing(object sender,
System.ComponentModel.CancelEventArgs e)
{
this.notifyIcon1.Visible = false;
this.notifyIcon1 = null;

}

Boolean PrimeraVez = true;
private void Form1_Activated(object sender, System.EventArgs e)
{
if( PrimeraVez )
{
PrimeraVez = false;
this.notifyIcon1.Visible = false;
}

}


Respuesta Responder a este mensaje
#2 Kasiyas
20/02/2004 - 10:30 | Informe spam
Muchas gracias, lo voy a probar y ya te cuento...


"Camilo Villa" escribió en el mensaje
news:
Hola Kasiyas:

Para solucionar este inconveniente, te sugiero que establezcas la


propiedad
MinimunSize al tamaño que aparece registrado en la propiedad Size, que se
supen es el tamaño ideal para tu formulario cuanto este se restablece al
valor original... de resto el código funciona a las mil maravillas...
Felicitaciones, no había visto esto antes... almeno no en mi corta
experiencia...

Me cuentas como te va...

"Kasiyas" escribió en el mensaje
news:
> Hola a todos,
>
> Tengo un pequeño problema con una aplicación en c# a la hora de
minimizarla
> en un icono de notificación en la bandeja del sistema.
> El caso es que cuando he maximizado la ventana de la aplicación (Form1)


y
a
> continuación la minimizo para ocultarla de forma que quede solo el icono
de
> notificación, cuando la vuelvo a restaurar haciendo doble click sobre
dicho
> icono de notificación, se vuelve a restaurar maximizada (hasta aqui todo
> bien), pero si intento devolverla al tamaño normal (pulsando otra vez el
> controlbox de Maximizar/Restaurar de la barra de titulo de la ventana
Form1)
> el tamaño de la misma se ve reducido a la barra de título. Y por más que
> maximize y restaure, siempre se queda de ese tamaño. Vamos que no hay
forma
> de dejarla en el estado normal (original), y siempre pasa despues de
> haberla: 1º maximizado, 2º minimizado y dejado como icono de


notificación,
> 3º restaurado haciendo doble click en el icono de notificación y 4º
intentar
> devolverla al tamaño normal.
> Espero haberme explicado lo suficientemente claro. El codigo con las
> funciones implicadas lo he puesto a continuación.
>
> Muchas gracias de antemano.
>
>
>
> private void notifyIcon1_DoubleClick(object sender, System.EventArgs e)
> {
> Show();
> WindowState = FormWindowState.Normal;
> Activate();
> this.notifyIcon1.Visible = false;
> }
>
> private void Form1_Resize(object sender, System.EventArgs e)
> {
>
> if( this.WindowState == FormWindowState.Minimized )
> {
> this.Visible = false;
> this.notifyIcon1.Visible = true;
> }
>
> }
>
> private void Form1_Closing(object sender,
> System.ComponentModel.CancelEventArgs e)
> {
> this.notifyIcon1.Visible = false;
> this.notifyIcon1 = null;
>
> }
>
> Boolean PrimeraVez = true;
> private void Form1_Activated(object sender, System.EventArgs e)
> {
> if( PrimeraVez )
> {
> PrimeraVez = false;
> this.notifyIcon1.Visible = false;
> }
>
> }
>
>


Respuesta Responder a este mensaje
#3 Kasiyas
21/02/2004 - 16:34 | Informe spam
Gracias, si que me ha funcionado la solución de utilizar la propiedad
MinimunSize, ya no se queda la ventana reducida a la minima expresión como
me pasaba antes.
No quiero abusar de tu confianza, pero es que ahora me surge otra cuestión,
no se como hacer para cambiar el icono durante la ejecución. Ya se que es
asignandole uno nuevo a la propiedad "icon", pero el problema es que no se
como se manejan los iconos en c# para incluirlos en mi aplicación y poder
usarlos. ¿Hay que utilizar algo como "imagelist" o se hace con archivos de
recursos como en c++?.

Gracias por todo.


"Kasiyas" escribió en el mensaje
news:%
Muchas gracias, lo voy a probar y ya te cuento...


"Camilo Villa" escribió en el mensaje
news:
> Hola Kasiyas:
>
> Para solucionar este inconveniente, te sugiero que establezcas la
propiedad
> MinimunSize al tamaño que aparece registrado en la propiedad Size, que


se
> supen es el tamaño ideal para tu formulario cuanto este se restablece al
> valor original... de resto el código funciona a las mil maravillas...
> Felicitaciones, no había visto esto antes... almeno no en mi corta
> experiencia...
>
> Me cuentas como te va...
>
> "Kasiyas" escribió en el mensaje
> news:
> > Hola a todos,
> >
> > Tengo un pequeño problema con una aplicación en c# a la hora de
> minimizarla
> > en un icono de notificación en la bandeja del sistema.
> > El caso es que cuando he maximizado la ventana de la aplicación


(Form1)
y
> a
> > continuación la minimizo para ocultarla de forma que quede solo el


icono
> de
> > notificación, cuando la vuelvo a restaurar haciendo doble click sobre
> dicho
> > icono de notificación, se vuelve a restaurar maximizada (hasta aqui


todo
> > bien), pero si intento devolverla al tamaño normal (pulsando otra vez


el
> > controlbox de Maximizar/Restaurar de la barra de titulo de la ventana
> Form1)
> > el tamaño de la misma se ve reducido a la barra de título. Y por más


que
> > maximize y restaure, siempre se queda de ese tamaño. Vamos que no hay
> forma
> > de dejarla en el estado normal (original), y siempre pasa despues de
> > haberla: 1º maximizado, 2º minimizado y dejado como icono de
notificación,
> > 3º restaurado haciendo doble click en el icono de notificación y 4º
> intentar
> > devolverla al tamaño normal.
> > Espero haberme explicado lo suficientemente claro. El codigo con las
> > funciones implicadas lo he puesto a continuación.
> >
> > Muchas gracias de antemano.
> >
> >
> >
> > private void notifyIcon1_DoubleClick(object sender, System.EventArgs


e)
> > {
> > Show();
> > WindowState = FormWindowState.Normal;
> > Activate();
> > this.notifyIcon1.Visible = false;
> > }
> >
> > private void Form1_Resize(object sender, System.EventArgs e)
> > {
> >
> > if( this.WindowState == FormWindowState.Minimized )
> > {
> > this.Visible = false;
> > this.notifyIcon1.Visible = true;
> > }
> >
> > }
> >
> > private void Form1_Closing(object sender,
> > System.ComponentModel.CancelEventArgs e)
> > {
> > this.notifyIcon1.Visible = false;
> > this.notifyIcon1 = null;
> >
> > }
> >
> > Boolean PrimeraVez = true;
> > private void Form1_Activated(object sender, System.EventArgs e)
> > {
> > if( PrimeraVez )
> > {
> > PrimeraVez = false;
> > this.notifyIcon1.Visible = false;
> > }
> >
> > }
> >
> >
>
>


Respuesta Responder a este mensaje
#4 Camilo Villa
24/02/2004 - 05:21 | Informe spam
El NotifyIcon en su propiedad Icon Sólo recibe objetos de tipo Icon, para
ello puedes realizar lo siguiente:

en las siguientes líneas de código, tengo que cuando de click en un botón me
cambie el icono de la barra por otro icono...

Boolean CambiarIcon=false;

private void button1_Click(object sender, System.EventArgs e)

{

System.Drawing.Icon miIcono; //Namespace que maneja la clase Icon, cuyo
intancia es la que asigno a la propiedad Icon del NotifyIcon

if (CambiarIcon)

{

miIcono = new Icon(@"D:\Archivos de programa\Microsoft Visual Studio .NET
2003\Common7\Graphics\icons\arrows\ARW09DN.ico");

CambiarIcon=false;


}

else

{

miIcono = new Icon(@"D:\Archivos de programa\Microsoft Visual Studio .NET
2003\Common7\Graphics\icons\arrows\ARW09UP.ico");

CambiarIcon=true;


}

this.notifyIcon1.Icon=miIcono;

}

Espero esto resuelva tus dudas...


Cordialmente,


Camilo Alfonso Villa N.
APTECH Certified Visual Studio .NET
Microsoft 3 DCE
"Kasiyas" escribió en el mensaje
news:eWd$lAJ%
Gracias, si que me ha funcionado la solución de utilizar la propiedad
MinimunSize, ya no se queda la ventana reducida a la minima expresión como
me pasaba antes.
No quiero abusar de tu confianza, pero es que ahora me surge otra


cuestión,
no se como hacer para cambiar el icono durante la ejecución. Ya se que es
asignandole uno nuevo a la propiedad "icon", pero el problema es que no se
como se manejan los iconos en c# para incluirlos en mi aplicación y poder
usarlos. ¿Hay que utilizar algo como "imagelist" o se hace con archivos de
recursos como en c++?.

Gracias por todo.


"Kasiyas" escribió en el mensaje
news:%
> Muchas gracias, lo voy a probar y ya te cuento...
>
>
> "Camilo Villa" escribió en el mensaje
> news:
> > Hola Kasiyas:
> >
> > Para solucionar este inconveniente, te sugiero que establezcas la
> propiedad
> > MinimunSize al tamaño que aparece registrado en la propiedad Size, que
se
> > supen es el tamaño ideal para tu formulario cuanto este se restablece


al
> > valor original... de resto el código funciona a las mil maravillas...
> > Felicitaciones, no había visto esto antes... almeno no en mi corta
> > experiencia...
> >
> > Me cuentas como te va...
> >
> > "Kasiyas" escribió en el mensaje
> > news:
> > > Hola a todos,
> > >
> > > Tengo un pequeño problema con una aplicación en c# a la hora de
> > minimizarla
> > > en un icono de notificación en la bandeja del sistema.
> > > El caso es que cuando he maximizado la ventana de la aplicación
(Form1)
> y
> > a
> > > continuación la minimizo para ocultarla de forma que quede solo el
icono
> > de
> > > notificación, cuando la vuelvo a restaurar haciendo doble click


sobre
> > dicho
> > > icono de notificación, se vuelve a restaurar maximizada (hasta aqui
todo
> > > bien), pero si intento devolverla al tamaño normal (pulsando otra


vez
el
> > > controlbox de Maximizar/Restaurar de la barra de titulo de la


ventana
> > Form1)
> > > el tamaño de la misma se ve reducido a la barra de título. Y por más
que
> > > maximize y restaure, siempre se queda de ese tamaño. Vamos que no


hay
> > forma
> > > de dejarla en el estado normal (original), y siempre pasa despues de
> > > haberla: 1º maximizado, 2º minimizado y dejado como icono de
> notificación,
> > > 3º restaurado haciendo doble click en el icono de notificación y 4º
> > intentar
> > > devolverla al tamaño normal.
> > > Espero haberme explicado lo suficientemente claro. El codigo con las
> > > funciones implicadas lo he puesto a continuación.
> > >
> > > Muchas gracias de antemano.
> > >
> > >
> > >
> > > private void notifyIcon1_DoubleClick(object sender, System.EventArgs
e)
> > > {
> > > Show();
> > > WindowState = FormWindowState.Normal;
> > > Activate();
> > > this.notifyIcon1.Visible = false;
> > > }
> > >
> > > private void Form1_Resize(object sender, System.EventArgs e)
> > > {
> > >
> > > if( this.WindowState == FormWindowState.Minimized )
> > > {
> > > this.Visible = false;
> > > this.notifyIcon1.Visible = true;
> > > }
> > >
> > > }
> > >
> > > private void Form1_Closing(object sender,
> > > System.ComponentModel.CancelEventArgs e)
> > > {
> > > this.notifyIcon1.Visible = false;
> > > this.notifyIcon1 = null;
> > >
> > > }
> > >
> > > Boolean PrimeraVez = true;
> > > private void Form1_Activated(object sender, System.EventArgs e)
> > > {
> > > if( PrimeraVez )
> > > {
> > > PrimeraVez = false;
> > > this.notifyIcon1.Visible = false;
> > > }
> > >
> > > }
> > >
> > >
> >
> >
>
>


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida