none
VB2010 - Problema al tratar de ejecutar esto RRS feed

  • Pregunta

  • Estimados

    tengo los siguientes controles: lblTotalVta.text (Total Venta) / txtEfectivo.text (Monto con que cancela el cliente) / lblVuelto.text (Vuelto que se debe dar al cliente)

    El usuario al realizar Enter debería ejecutar CalculoVuelto y posterior enviar el focus al botón btnGrabar, pero esto no sucede. El focus queda pegado en txtEfectivo y además, tampoco saca el cálculo del vuelto. Que puede ser?

        Private Sub txtEfectivo_Leave(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtEfectivo.Leave
            If Not [String].IsNullOrWhiteSpace(lblTotalVta.Text) And Not [String].IsNullOrWhiteSpace(txtEfectivo.Text) Then
                CalculoVuelto(lblTotalVta.Text, txtEfectivo.Text)
            End If
        End Sub
    
        Private Sub txtEfectivo_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtEfectivo.KeyPress
            If e.KeyChar = Convert.ToChar(Keys.Return) Then
                e.Handled = True
            End If
        End Sub
    
        Private Sub CalculoVuelto(ByVal Total As Integer, ByVal Efectivo As Integer)
            Dim Vuelto As Integer = Efectivo - Total
            txtEfectivo.Text = FormatNumber(Efectivo, 0)
            lblVuelto.Text = FormatNumber(Vuelto, 0)
            btnGrabar.Focus()
        End Sub

    • Cambiado Enrique M. Montejo sábado, 7 de abril de 2012 16:56 Controles de Windows Forms (De:Lenguaje VB.NET)
    viernes, 23 de marzo de 2012 23:59

Todas las respuestas

  • hola

    y si haces

    Private Sub txtEfectivo_Leave(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtEfectivo.Leave
    	
    	CalculoVuelto(lblTotalVta.Text, txtEfectivo.Text)
    
    End Sub
    
    Private Sub txtEfectivo_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtEfectivo.KeyPress
    	
    	If e.KeyChar = Convert.ToChar(Keys.Return) Then
    		CalculoVuelto(lblTotalVta.Text, txtEfectivo.Text)
    		e.Handled = True
    	End If
    	
    End Sub
    
    Private Sub CalculoVuelto(ByVal Total As String, ByVal Efectivo As String)
    
    	If [String].IsNullOrWhiteSpace(Total) Or [String].IsNullOrWhiteSpace(Total) Then
    		Return
    	End If
    	
    	Dim _total As Integer
    	If Not Int32.TryParse(Total, _total) Then
    		Return
    	End If
    
    	Dim _efectivo As Integer
    	If Not Int32.TryParse(Efectivo, _efectivo) Then
    		Return
    	End If
    	
    	Dim Vuelto As Integer = _total - _efectivo
    	
    	txtEfectivo.Text = _efectivo.ToString("N0")
    	lblVuelto.Text = Vuelto.ToString("N0")
    	
    	btnGrabar.Focus()
    	
    End Sub

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    sábado, 24 de marzo de 2012 0:56
  • Gracias Leandro por responde, te comento que utilicé el código que propusiste pero al presionar ENTER o al perder el focus, no genera resultado ni tampoco envia el focus al botón grabar.
    El formato en que viene lblTotalVenta es: Currency ($ 10.000) y txtEfectivo Number (20.000).

    sábado, 24 de marzo de 2012 1:22
  • El formato en que viene lblTotalVenta es: Currency ($ 10.000) y txtEfectivo Number (20.000).

    por eso no funciona, como vas a poenr en el textbox un $ 10.000, el signo $ hace que no pueda convertirse a numerico, por eso pasa de largo y no calcula

    ademas podrias poner un breakpoint en el codigo he ir paso a paso para ver por donde pasa, es la mejor forma de entender y localizar un problema

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    sábado, 24 de marzo de 2012 4:47