Eventos

Iniciado por TheGhost(Z), 12 Enero 2011, 15:06 PM

0 Miembros y 1 Visitante están viendo este tema.

TheGhost(Z)

Código (vbnet) [Seleccionar]

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


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.





[D4N93R]

Estás usando databinding?

TheGhost(Z)


TheGhost(Z)

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



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...


.mokk.

#4
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 (vb.net) [Seleccionar]
Dim oprimio as Boolean = False
Private Sub chkEnviado_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles chkEnviado.CheckedChanged
  If oprimio = True Then
    oprimio = False
    Exit Sub
  End If
  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 Sub

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


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

[D4N93R]

Puedes hacer la suscripción del evento a mano y entonces desuscribirte cuando vayas a cambiarle el valor a código.

TheGhost(Z)

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í:
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:

MANULOMM

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


TheGhost(Z)

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:

chkEnviado.Checked = False NoProducirEvento

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

[D4N93R]

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.