Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: Hartigan en 10 Septiembre 2010, 18:58 pm



Título: Error con notifyIcon c#
Publicado por: Hartigan en 10 Septiembre 2010, 18:58 pm
Hola, pues he creado un notifyIcon para mi agenda para poder minimizarla, pero me salen varios errores.

el primero de ellos es que al restaurar la aplicación una de las barras de herramientas se queda en gris.

y el otro problema es que después de restaurar la aplicación al intentar cerrarla me da un erro de desbordamiento de pila.

Os muestro de lo que os hablo:

(http://img843.imageshack.us/i/barraerror.png)

(http://img528.imageshack.us/i/errorcerrar.png)


Mis funciones para minimizar a la bandeja son:

Código
  1.  
  2. private void notifyIcon1_DoubleClick(object sender, EventArgs e)
  3.        {
  4.            this.Show();
  5.            this.WindowState = FormWindowState.Normal;
  6.            this.notifyIcon1.Visible = false;
  7.        }
  8.  
  9.        private void Interfaz_MenuPrincipal_Resize(object sender, EventArgs e)
  10.        {
  11.            if (this.WindowState == FormWindowState.Minimized)
  12.            {
  13.                //Ocultamos el formulario
  14.                this.Visible = false;
  15.                //Hacemos visible el icono de la bandeja del sistema
  16.                notifyIcon1.Visible = true;
  17.            }
  18.  
  19.        }
  20.  

gracias de antemano.


Título: Re: Error con notifyIcon c#
Publicado por: [D4N93R] en 10 Septiembre 2010, 19:12 pm
en el notifyIcon1_DoubleClick deberia ser:
Código
  1. if (this.WindowState == FormWindowState.Minimized)
  2.    this.WindowState = FormWindowState.Normal;
  3. this.Activate();


Título: Re: Error con notifyIcon c#
Publicado por: Hartigan en 10 Septiembre 2010, 20:48 pm
Me sigue dando los mismos errores....


Título: Re: Error con notifyIcon c#
Publicado por: [D4N93R] en 10 Septiembre 2010, 20:55 pm
Podrïas postear el stackTrace...


Título: Re: Error con notifyIcon c#
Publicado por: Hartigan en 10 Septiembre 2010, 21:07 pm
Podrïas postear el stackTrace...

Excepción no controlada del tipo 'System.StackOverflowException' en System.Windows.Forms.dll

es lo único que me dice....



Título: Re: Error con notifyIcon c#
Publicado por: [D4N93R] en 10 Septiembre 2010, 21:30 pm
Está entrando en un loop infinito y por eso te da el error. posiblemente sea por  private void Interfaz_MenuPrincipal_Resize(object sender, EventArgs e), que se llama por ponerse invisible si no estoy equivocado. Intenta con otro evento a ver..


Título: Re: Error con notifyIcon c#
Publicado por: Hartigan en 11 Septiembre 2010, 01:51 am
Nada no hay manera, me sigue dando el mismo error...


Título: Re: Error con notifyIcon c#
Publicado por: .mokk. en 11 Septiembre 2010, 03:26 am
Intenta asi
Código
  1.    Private Sub Form1_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Resize
  2.        If Me.WindowState = FormWindowState.Minimized Then
  3.            Me.Visible = False
  4.            NotifyIcon1.Visible = True
  5.        End If
  6.    End Sub
  7.  
  8.    Private Sub NotifyIcon1_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles NotifyIcon1.DoubleClick
  9.        Me.Visible = True
  10.        Me.WindowState = FormWindowState.Normal
  11.        Me.Show()
  12.        NotifyIcon1.Visible = False
  13.    End Sub
  14.  

Ami me funciono

Fallos
visible = true - jamas lo pusistes
Me.WindowState = FormWindowState.Normal - se pone antes del show asi antes de mostrarse ya estara normal si lo pones despues se mostrara y vera que sigue minimizado y dara otra vez y nose mostrara nunca


Título: Re: Error con notifyIcon c#
Publicado por: Hartigan en 11 Septiembre 2010, 03:54 am
Intenta asi
Código
  1.    Private Sub Form1_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Resize
  2.        If Me.WindowState = FormWindowState.Minimized Then
  3.            Me.Visible = False
  4.            NotifyIcon1.Visible = True
  5.        End If
  6.    End Sub
  7.  
  8.    Private Sub NotifyIcon1_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles NotifyIcon1.DoubleClick
  9.        Me.Visible = True
  10.        Me.WindowState = FormWindowState.Normal
  11.        Me.Show()
  12.        NotifyIcon1.Visible = False
  13.    End Sub
  14.  

Ami me funciono

Fallos
visible = true - jamas lo pusistes
Me.WindowState = FormWindowState.Normal - se pone antes del show asi antes de mostrarse ya estara normal si lo pones despues se mostrara y vera que sigue minimizado y dara otra vez y nose mostrara nunca

sí, ya he probado de esa manera y tampoco, me sigue dando error de desbordamiento en el close del form y no se porqué....


Título: Re: Error con notifyIcon c#
Publicado por: 43H4FH44H45H4CH49H56H45H en 11 Septiembre 2010, 03:59 am
A mi me daba problemas cuando no especificaba el boton del mouse, prueba asi:

Código
  1. if (e.Button == MouseButtons.Left){
  2. //code
  3. }


Título: Re: Error con notifyIcon c#
Publicado por: Hartigan en 11 Septiembre 2010, 04:23 am
A mi me daba problemas cuando no especificaba el boton del mouse, prueba asi:

Código
  1. if (e.Button == MouseButtons.Left){
  2. //code
  3. }

Gracias a todos pero me sigue pasando lo mismo...

alguna solución más???


Título: Re: Error con notifyIcon c#
Publicado por: [D4N93R] en 11 Septiembre 2010, 05:01 am
Ese es todo el código que maneja el notifier y el minimizado de la ventana? no tienes más nada?


Título: Re: Error con notifyIcon c#
Publicado por: Hartigan en 11 Septiembre 2010, 16:36 pm
Ese es todo el código que maneja el notifier y el minimizado de la ventana? no tienes más nada?

aparte de eso tengo esto que no se si afectará, pero he probado a quitarlo y sigue pasando igualmente:

Código
  1.  
  2. const int WM_SYSCOMMAND = 0x112;
  3. const int SC_MINIMIZE = 0xF020;
  4. const int SC_CLOSE = 0xF060;
  5.  
  6. ......
  7. .....
  8. protected override void WndProc(ref Message m)
  9.        {
  10.            if (m.Msg == WM_SYSCOMMAND)
  11.            {
  12.                if (m.WParam == (IntPtr)SC_CLOSE)
  13.                    Application.Exit();
  14.  
  15.                base.WndProc(ref m);
  16.            }
  17.            else
  18.                base.WndProc(ref m);
  19.        }
  20.  
  21. .....

puede ser porque tengo muchas barras de herramientas y menús, y que de error al volver a cargarlas despés de poner el formulario en estado normal???

Esque como he dicho una de las barras de herramientas que tengo al volver el form al estado normal tampoco se carga bien, se queda en gris... entonces no se si es por eso..


Título: Re: Error con notifyIcon c#
Publicado por: [D4N93R] en 11 Septiembre 2010, 17:10 pm
Bueno, no creo que sea eso, el problema es que se te está llamando algo recursivamente, puede que sea el resize o algo. Ejecutalo y deja que te salga el Error, cuando tengas el error te sale esa ventanita del Exception, hay algo que dice StackTrace, pon eso acá.


Título: Re: Error con notifyIcon c#
Publicado por: 43H4FH44H45H4CH49H56H45H en 11 Septiembre 2010, 17:49 pm
@Hartigan esto funciona bien en mi máquina.

Código
  1. private void Form1_Resize(object sender, EventArgs e)
  2.        {
  3.            if (WindowState == FormWindowState.Minimized)
  4.            {
  5.                this.Hide();
  6.                notifyIcon1.Visible = true;
  7.            }
  8.        }
  9.  
  10.        private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e)
  11.        {
  12.            this.Show();
  13.            this.WindowState = FormWindowState.Normal;
  14.            this.notifyIcon1.Visible = false;
  15.        }

Porque no pruebas en otro PC, o en una máquina virtual.


Título: Re: Error con notifyIcon c#
Publicado por: Hartigan en 11 Septiembre 2010, 21:17 pm
Bueno, no creo que sea eso, el problema es que se te está llamando algo recursivamente, puede que sea el resize o algo. Ejecutalo y deja que te salga el Error, cuando tengas el error te sale esa ventanita del Exception, hay algo que dice StackTrace, pon eso acá.

Esque nisiquiera da detalles del error. solamente dice esto:

No se controló System.StackOverflowException

y esto: {No se puede evaluar la expresión porque el subproceso actual está en un estado de desbordamiento de pila.}


@Hartigan esto funciona bien en mi máquina.

Código
  1. private void Form1_Resize(object sender, EventArgs e)
  2.        {
  3.            if (WindowState == FormWindowState.Minimized)
  4.            {
  5.                this.Hide();
  6.                notifyIcon1.Visible = true;
  7.            }
  8.        }
  9.  
  10.        private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e)
  11.        {
  12.            this.Show();
  13.            this.WindowState = FormWindowState.Normal;
  14.            this.notifyIcon1.Visible = false;
  15.        }

Porque no pruebas en otro PC, o en una máquina virtual.

ya lo he probado y sigue pasando lo mismo.... Si lo que no me pase a mi.... Esque el error lo da en el close del form.... no se si hay algo ahí que tenga que ver...


Título: Re: Error con notifyIcon c#
Publicado por: Hartigan en 13 Septiembre 2010, 01:38 am
Bueno solucionados los problemas. Parece ser que era porque se repetía muchas veces una misma función y creo que era porque usaba mucho el showDialog() en lugar de show(). Al parecer de momento funciona bien. xDD

Gracias por la ayuda a todos ;)