Foros del Web » Programación para mayores de 30 ;) » .NET »

problema en recorrido constante

Estas en el tema de problema en recorrido constante en el foro de .NET en Foros del Web. hola amigos, tengo 8 textbox...y quiero que al pulsar enter se salte de textbox en textbox, en principio lo he conseguido, pero el problema es ...
  #1 (permalink)  
Antiguo 24/05/2011, 13:48
 
Fecha de Ingreso: noviembre-2010
Ubicación: madrid
Mensajes: 478
Antigüedad: 14 años
Puntos: 5
Pregunta problema en recorrido constante

hola amigos, tengo 8 textbox...y quiero que al pulsar enter se salte de textbox en textbox, en principio lo he conseguido, pero el problema es que cada vez que salto de uno a otro he puesto unas operaciones que no suceden en el textbox que necesito, si no que suceden todo el rato, imaginaros que quiero multiplicar el textbox 6 por el 7 y poner el resultado en el 8 pues bien en cuanto estoy en el primer textbox y pulso enter, trata de hacer el cálculo anque en esos textbox todavía no hay datos...os pongo el código gracias por vuestra ayuda...

aquí hago el salto con intro
'Proporciona que pueda cambiar de textbox en textbox pulsando enter
Protected Overrides Sub OnKeyDown(ByVal e As KeyEventArgs)
'Try
' ¿Se ha pulsado la tecla Enter?
If e.KeyData <> Keys.Enter Then
MyBase.OnKeyDown(e)
Return
End If
' Desplazar el foco entre los distintos controles
'mediante la tecla Return. El código está basado en un
'ejemplo de Francesco Balena.
'
'Iniciar todos los controles seleccionados actualmente.
Dim ctrl As Control = Me.ActiveControl

Dim b As Boolean = False
Do
' Obtener el siguiente control hacia delante en el
' orden de tabulación.
ctrl = Me.GetNextControl(ctrl, True)
restadto()


' GetNextControl(ctrl, False) puede devolver Nothing si
' es el primer control.
If (ctrl IsNot Nothing) AndAlso (ctrl.CanFocus) AndAlso (ctrl.TabStop) Then
' Si el control puede recibir el foco, se lo doy.
ctrl.Focus()
b = True
End If
Loop While b = False

MyBase.OnKeyDown(e)
'Catch
'End Try
End Sub


aquí el cálculo que repite sin parar
public sub restardto()
If RadioSinDto.Checked Then
multiplicatextboxunidades()
'calculo precio por el total de unidades compradas para dar el precio de la línea total y doy formato
Dim total As Decimal = 0
total = CDec(CStr((Val(TextUnd.Text) * Val(TextPrecio.Text))))
TextTotalLinea.Text = Format(Format(total, "#,##0.00"))

'calculo el precio * las unidades del formato del producto
Dim totalund As String
totalund = TextTotaluco.Text
MessageBox.Show(TextTotaluco.Text)
'Dim total2 As Decimal = 0
'total2 = CDec(((Val(TextPrecio.Text) / Val(Textuncomp.Text))))
'TextPUnid.Text = Format(Format(total2, "#,##0.00"))

'aquí calculo la cantidad de producto comprado ejemplo
TextTotaluco.Text = CStr((Val(Textuncomp.Text) * Val(TextTUnid.Text)))

End If
end sub
  #2 (permalink)  
Antiguo 24/05/2011, 14:12
 
Fecha de Ingreso: febrero-2010
Ubicación: México
Mensajes: 738
Antigüedad: 14 años, 9 meses
Puntos: 37
Respuesta: problema en recorrido constante

Guille te comento, de la forma que estas tratando de hacerlo no es lo correcto, los textbox traen eventos, en tu caso lo puedes solucionar con el evento KeyPress.

Por ejemplo supongamos que tienes 3 textbox, tb1, tb2 y tb3. En tb3 quieres poner la multiplicación de tb1 x tb2.

Private Sub tb1_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles tb1.KeyPress

If e.KeyChar = Convert.ToChar(Keys.Enter) Then
tb2.Focus()
End If

End Sub

Private Sub tb2_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles tb2.KeyPress

If e.KeyChar = Convert.ToChar(Keys.Enter) Then
'-- Validas que tb1 y tb2 tengan valor
If Not String.IsNullOrEmpty(tb1.Text) And Not String.IsNullOrEmpty(tb2.Text) Then
Me.tb3.Text = tb1.Text * tb2.Text
tb3.Focus()
Else
MessageBox.Show("tb1 y tb2 son campos obligatorios. ", "Error")
End If

End If

End Sub

Saludos!
__________________
http://ka0stj.wordpress.com/
  #3 (permalink)  
Antiguo 24/05/2011, 14:13
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 14 años, 4 meses
Puntos: 267
Respuesta: problema en recorrido constante

Hola Guille! creo que eso lo podrias controlar mejor con el evento KeyPress... Te pongo un ejemplo en c# ya tu lo pasas porque me da flojeritis pasarlo a vb.net XD :

Para que pases de TextBox en TextBox
Código c#:
Ver original
  1. private void txtPaterno_KeyPress(object sender, KeyPressEventArgs e)
  2.         {
  3.             //Si la Tecla es Enter
  4.             if (e.KeyChar == Convert.ToChar(Keys.Enter))
  5.             {
  6.                     txtSiguienteTextBox.Focus();
  7.              }
  8. }

Para que calcules en tu ultimo textBox :
Código c#:
Ver original
  1. private void txtPaterno_KeyPress(object sender, KeyPressEventArgs e)
  2.         {
  3.             //Si la Tecla es Enter
  4.             if (e.KeyChar == Convert.ToChar(Keys.Enter))
  5.             {
  6.                     //Aqui ya pones el codigo que deseas que realize
  7.                     //Como el calculo que pides
  8.              }
  9. }

Espero te haya servido. Saludos! .
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #4 (permalink)  
Antiguo 24/05/2011, 14:15
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 14 años, 4 meses
Puntos: 267
Respuesta: problema en recorrido constante

jajaja para cuando escribí, no vi la respuesta de Ka0stj, Nuestras respuestas son similares nada mas que en lenguajes distintos XD. Guiate de cualquiera. SAludos!.
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #5 (permalink)  
Antiguo 24/05/2011, 14:29
 
Fecha de Ingreso: noviembre-2010
Ubicación: madrid
Mensajes: 478
Antigüedad: 14 años
Puntos: 5
Respuesta: problema en recorrido constante

lo he intentado así, pero tampoco, en cada pulsación de intro ejecuta todo el código y solo quiero que lo ejecute cuando esté en un textbox concreto
  #6 (permalink)  
Antiguo 24/05/2011, 14:30
 
Fecha de Ingreso: noviembre-2010
Ubicación: madrid
Mensajes: 478
Antigüedad: 14 años
Puntos: 5
Respuesta: problema en recorrido constante

vale
vale
vale
arreglado..................estaba poniendolo al revés...gracias amigos sois los mejores del mundo besos y abrazos a todossssssssssssssssssssssssssssssssssssssssssssss ssss
  #7 (permalink)  
Antiguo 24/05/2011, 14:31
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 14 años, 4 meses
Puntos: 267
Respuesta: problema en recorrido constante

en el evento key press de tu ultimo textox pon el metodo de calculo!, en los otros 2 eventos donde ingresas los valores a calcular solo le colocas el TextBoxSiguiente.Focus().

NO OLVIDES COMENTAR LOS CODIGOS DEL EVENTO KEYDOWN PARA QUE FUNCIONE PORQUE SINO TE VA A SEGUIR DANDO EL MISMO RESULTADO :).
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #8 (permalink)  
Antiguo 24/05/2011, 14:32
 
Fecha de Ingreso: noviembre-2010
Ubicación: madrid
Mensajes: 478
Antigüedad: 14 años
Puntos: 5
Respuesta: problema en recorrido constante

soisssss....la caña del planeta net....joer gracias otra vez en cuanto lo termine pongo el código
  #9 (permalink)  
Antiguo 24/05/2011, 14:37
 
Fecha de Ingreso: noviembre-2010
Ubicación: madrid
Mensajes: 478
Antigüedad: 14 años
Puntos: 5
Respuesta: problema en recorrido constante

AHIIIII VAAAA...Funcionando a la perfección...gracias

Private Sub TextUnd_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextUnd.KeyPress

If e.KeyChar = Convert.ToChar(Keys.Enter) Then
TextFComp.Focus()
End If

End Sub

Private Sub TextFComp_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextFComp.KeyPress

If e.KeyChar = Convert.ToChar(Keys.Enter) Then
'-- Validas que tb1 y tb2 tengan valor
If Not String.IsNullOrEmpty(TextUnd.Text) And Not String.IsNullOrEmpty(TextFComp.Text) Then
Me.TextTUnid.Text = CStr(CDbl(TextUnd.Text) * CDbl(TextFComp.Text))
TextTUnid.Focus()
Else
MessageBox.Show("Debe cubrir UNIDADES y F.COMPRA campos obligatorios. ", "Error")
End If

End If

End Sub
  #10 (permalink)  
Antiguo 24/05/2011, 19:30
Avatar de abel_c_b  
Fecha de Ingreso: junio-2008
Mensajes: 103
Antigüedad: 16 años, 4 meses
Puntos: 1
Respuesta: problema en recorrido constante

Gracias por el code

Etiquetas: constante, recorrido
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:19.