Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: TheGhost(Z) en 12 Enero 2011, 15:06 pm



Título: Eventos
Publicado por: TheGhost(Z) en 12 Enero 2011, 15:06 pm
Código
  1. Private Sub chkEnviado_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles chkEnviado.CheckedChanged
  2.  If chkEnviado.Checked = True Then
  3.     If MsgBox("¿Estas seguro que esta factura esta enviada?", CType(MsgBoxStyle.Question + MsgBoxStyle.YesNo, MsgBoxStyle)) = MsgBoxResult.No Then
  4.        chkEnviado.Checked = False
  5.     End If        
  6.  End If
  7. End If
  8.  

Hasta aquí ni un problema. Hasta que cuando edito la factura enviada, con el btnEditar. Activo: ChkEnviado.Enabled=True y la desseleciono manualmente: chkEnviado.Checked = False

Luego presiono en el btnCancelar para restablecer los datos y me sale el mensaje como si ubiera precionado en el chkEmitido.

Mi pregunta es pues como hago para que no aparezca ese mensaje cuando preciono el boton cancelar.






Título: Re: Eventos
Publicado por: [D4N93R] en 13 Enero 2011, 15:14 pm
Estás usando databinding?


Título: Re: Eventos
Publicado por: TheGhost(Z) en 13 Enero 2011, 15:41 pm
Que es eso? :o


Título: Re: Eventos
Publicado por: TheGhost(Z) en 13 Enero 2011, 15:52 pm
Código:
Private Sub chkEnviado_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles chkEnviado.CheckedChanged
  If chkEnviado.Checked = True Then
     If MsgBox("¿Estas seguro que esta factura esta enviada?", CType(MsgBoxStyle.Question + MsgBoxStyle.YesNo, MsgBoxStyle)) = MsgBoxResult.No Then
        chkEnviado.Checked = False
     End If       
  End If
End If

Código:
Private Sub btnCancelar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCancelar.Click
   chkEnviado.Checked = True
End Sub

Bueno, aquí esta mas claro. Cuando hago click en el btnCancelar me sale el mensaje como cuando doy click en el chkEnviado.

Pues quiero evitar que salga ese mensaje... no sé. que omita todo su codigo xq lo estoy activando por codigo desde otro lado...



Título: Re: Eventos
Publicado por: .mokk. en 13 Enero 2011, 17:57 pm
Am nose si te sirva pero primero que pense fue en crear una variable del tipo Booleana y asi ver si oprimio y quedaria algo asi

Código
  1. Dim oprimio as Boolean = False
  2. Private Sub chkEnviado_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles chkEnviado.CheckedChanged
  3.  If oprimio = True Then
  4.    oprimio = False
  5.    Exit Sub
  6.  End If
  7.  If chkEnviado.Checked = True Then
  8.     If MsgBox("¿Estas seguro que esta factura esta enviada?", CType(MsgBoxStyle.Question + MsgBoxStyle.YesNo, MsgBoxStyle)) = MsgBoxResult.No Then
  9.        chkEnviado.Checked = False
  10.     End If        
  11.  End If
  12. End Sub
  13.  
  14. Private Sub btnCancelar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCancelar.Click
  15.   oprimio = True
  16.   chkEnviado.Checked = True
  17. End Sub
  18.  

deberia funcionar y fue lo primero que se me ocurrio jeje aunque claro hay varias formas mas sencillas.


Título: Re: Eventos
Publicado por: [D4N93R] en 14 Enero 2011, 22:30 pm
Puedes hacer la suscripción del evento a mano y entonces desuscribirte cuando vayas a cambiarle el valor a código.


Título: Re: Eventos
Publicado por: TheGhost(Z) en 15 Enero 2011, 16:33 pm
Hola, .mokk.

Ya había pensado en esa solución. Pero, me preguntaba que a lo mejor Vb.Net tiene alguna solución preparada para este tipo de casos. No sé. No creo que las grandes aplicaciones complejas que son desarrolladas por un grupo de programadores solucione ese caso con lo que me has propuesto, o si??

A lo mejor exista algo así:
Código:
chkEnviado.Checked = False NoProducirEvento

Mi inquietud es mas por programar de la manera correcta. Es decir, usar los códigos preparados para la situación y no implementar algo sencillo como lo que me has propuesto, aunque funcione perfectamente.
Claro que si no hay otra manera se usa y ya...  :huh:


Título: Re: Eventos
Publicado por: MANULOMM en 15 Enero 2011, 20:17 pm
En mi experiencia, podria decirte que la programación de interfaz suele ser un poco parchada, en las grandes aplicaciones toda la logica es relamente abstracta, la logica de interfaz de usuario suele llenarse de parches y trucos de este estilo, algunas suites de controles tienen eventos para detectar cuando el usuario realizo la acción o cuando se lanzo programaticamente.

Atentamente,

Juan Manuel Lombana
Microsoft Certified Professional
Microsoft Student Partner
Medellin - Colombia


Título: Re: Eventos
Publicado por: TheGhost(Z) en 17 Enero 2011, 13:46 pm
Citar

para detectar cuando el usuario realizo la acción o cuando se lanzo programaticamente.


por lo que dices, MANULOMM, si hay gente arreglandose para solucionar este tipo de casos microsoft debería preocuparse y solucionar con un simple:

Código:
chkEnviado.Checked = False NoProducirEvento

En su próxima actualización, no creen?!!! >:D


Título: Re: Eventos
Publicado por: [D4N93R] en 17 Enero 2011, 22:59 pm
Uhm, no, te de-subscribes haces lo que quieras hacer, y luego te subscribes de nuevo.. Es la vía, que yo al menos, considero correcta.


Título: Re: Eventos
Publicado por: TheGhost(Z) en 18 Enero 2011, 20:58 pm
Hola, [D4N93R]

Me podrías explicar como me suscribo y desuscribo.... :rolleyes:


Título: Re: Eventos
Publicado por: [D4N93R] en 19 Enero 2011, 12:59 pm
Claro,

En este enlace lo explican muy bien: http://tinyurl.com/5tm9mpg

:)