Visual Basic.NET - revertir una suma en visual basic

 
Vista:

revertir una suma en visual basic

Publicado por JorgeG (4 intervenciones) el 09/08/2019 21:33:18
Hola amigos, estoy tratando de hacer un programa donde se realice una suma en tiempo real
con 2 textbox.
Mi finalidad es que si escribo cualquier numero en el textbox1 se le sume 2 y se muestre el resultado en el textbox2, eso me es facil.
Pero quiero que si escribo cualquier numero en el textbox2 se re leste 2 y se muestre el resultado en el textbox1 y eso no lo logro hacer. Este es mi codigo


1
2
3
4
5
Public Sub Cuadros_De_Suma() Handles TextBox1.TextChanged, TextBox2.TextChanged
 
    TextBox2.Text = (TextBox1.Text + 2)
 
End Sub
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Phil Rob
Val: 1.827
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

revertir una suma en visual basic

Publicado por Phil Rob (440 intervenciones) el 09/08/2019 22:25:21
Hola,

No puedes utilizar el operador + para totalizar un valor numérico y un valor de tipo String.
VB.Net permite algunas conversiones implícitas pero no todas.

Puedes hacer :

1
2
3
4
Dim UnaVariable As Integer
UnaVariable = TextBox1.Text
UnaVariable = UnaVariable + 2
TextBox2.Text = UnaVariable

O también :

1
TextBox2.Text = (CType(TextBox1.Text, Integer) + 2).ToString  ‘ Aquí, nungun conversión implícita

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

revertir una suma en visual basic

Publicado por JorgeG (4 intervenciones) el 09/08/2019 22:59:55
Me dejaste en las mimas amigo Phil,

lo que quiero es que si escribo en el textbox1 un 5 se reste 2 y sea 7 en el textboxt2 y si escribo un 6 en el textbox2 se le reste 2 y sea un 4 en el textbox1.

Lo que me dijiste fue practicamente lo mismo que tenia


1
2
3
4
5
6
7
Public Sub Cuadros_De_Suma() Handles TextBox1.TextChanged, TextBox2.TextChanged
 
    TextBox2.Text = (CType(TextBox1.Text, Integer) + 2).ToString  ' Aquí, nungun conversión implícita
 
    TextBox1.Text = (CType(TextBox2.Text, Integer) - 2).ToString  ' Aquí, nungun conversión implícita
 
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Phil Rob
Val: 1.827
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

revertir una suma en visual basic

Publicado por Phil Rob (440 intervenciones) el 10/08/2019 00:08:22
Disculpa, no bien comprendo ...

Pero, comprendo tu codigo :
1
2
TextBox2.Text = (CType(TextBox1.Text, Integer) + 2).ToString  ' Aquí, nungun conversión implícita
TextBox1.Text = (CType(TextBox2.Text, Integer) - 2).ToString  ' Aquí, nungun conversión implícita
Si este es bien el algoritmo que quieres, entonce comprendo.

Tienes un problema con los eventos :
1
Handles TextBox1.TextChanged, TextBox2.TextChanged

El codigo de los eventos TextChanged es llamado a cada modificación de cada TextBox Y este codigo modifica cada TextBox ! hay un cicla infinita. Este es un problema de algoritmo, tienes que organizar otramente.

Mañana, buscaré de programar este codigo sin cicla infinita.

...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

revertir una suma en visual basic

Publicado por JorgeG (4 intervenciones) el 10/08/2019 00:21:02
Exactamente phil eso es lo que quiero, pero bueno haciendo eso daria un bucle infinito y da error.

Te agradeceria mucho que me ayudes, igual gracias por tu tiempo tambien
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Phil Rob
Val: 1.827
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

revertir una suma en visual basic

Publicado por Phil Rob (440 intervenciones) el 10/08/2019 00:39:22
Continuacion ...

No es posible calcular con TextChanged porque es cambiado por cada caracter.

Con el evento Leave, calculamos cuando el TextBox es completamente escribido. ( utilizas <TAB> para testar).

Rapidamente, probas el codigo que adjunto : DosTextBox.zip

Ahora, voy dormir
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

revertir una suma en visual basic

Publicado por JorgeG (4 intervenciones) el 10/08/2019 02:54:17
Hola Phil gracias por responder!!
mira he logrado hacer algo como lo que quiero, que sea realmente en tiempo real

estoy tratando de hacer una pequeña calculadora en tiempo real para transformar de millas a kilometros y de kilometros a millas con dos textbox
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Public Sub KMAMILLAS() Handles TextBox5.TextChanged
    On Error Resume Next
 
    TextBox6.Text = Math.Round(Convert.ToDouble(TextBox5.Text * 1.609), 2)
 
End Sub
 
 
Public Sub MILLASAKM() Handles TextBox6.TextChanged
 
    On Error Resume Next
 
    TextBox5.Text = Math.Round(Convert.ToDouble(TextBox6.Text / 1.609), 2)
 
End Sub

Hice este codigo y me funciona hasta cierto punto, si coloco en el textbox5 un numero me hace la conversion bien, pero si escribo un numero en el textbox6 ejemplo 450 se me escribe como 504

si escribo 40 se me escribe como 04,01
si escribo 100 se me escribe como 010,01.

me podria ayudar?


solo quiero una calculadora como la de google https://www.google.com/search?client=firefox-b-d&channel=crow&q=de+millas+a+km
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Phil Rob
Val: 1.827
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

revertir una suma en visual basic

Publicado por Phil Rob (440 intervenciones) el 10/08/2019 09:42:17
Hola,

No puedes utilizar NUNGUN operador aritmético para hacer un cálculo ente un valor numérico y un valor de tipo String.

Ahora, haces dos procedimientos (para eliminar el problema de la cicla infinita), pero existe todavía :
Cuando modificar TextBox6, llamas TextBox5_TextChanged y cuando modificar TextBox5, llamas TextBox6_TextChanged y … .
La cicla existe.

El problema como el 100 que da 010,01, es quizá por un error del separador de los decimales. Para no cambiar los parámetros del computador y no deber ajustar los valores de “Culture” del proyecto, propongo una función que cambiar el separador para que este siempre bien. Este función es PuntoComa que es llamado cada vez que un valor es introducido en un TextBox cuando la entrada es completa (<ENTER>).

Es también por <ENTER> que es permitido de trabajar con el evento KeyDown que es mejor que Leave para las entradas. Nunca tienes un buen resultado si trabajas con el evento TextChanged.

También, mezclas VB.Net y VisualBasic (VB6). El futuro es DotNet con VB.Net, C#, …
Propongo que cambias las referencias del proyecto para no utilizar las instrucciones VisualBasic.
Adjunto un video que muestra como eliminar la referencia VisualBasic : NO_VisualBasic.zip.

También, adjunto el proyecto con el código correctamente organizado : DosTextBox2.zip.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar