¿Cómo hacer operaciones en Visual Studio sin utilizar un botón?
En esta oportunidad quiero hacer un pequeño programa para realizar el cálculos de unas (sumas), (restas), al principio me parecía fácil, pero cuando empecé a realizar el código tuve muchos inconvenientes.
Voy a adjuntar una imagen de mi .form para que entiendan de lo que hablo. Sin que decir mi pregunta es la siguiente:
1) Cómo hago para hacer la operación (suma) y (resta) sin necesidad de utilizar un botón, según la imagen adjunta, necesito restar Tmax - Tmin pero que se realice automáticamente apenas inserte el valor de Tmax y Tmin. Nunca pude hacer que se me restaran, no sé cual es mi error.
2) Y mi segunda pregunta es, los valores DeltaTdif, Tref y Diferencial Temperatura, solo se van a mostrar, lo único que voy a insertar son los valores de Tmax, Tmin, Tdif. En ese caso, el valor de Tref necesito copiarlo y mi meta es insertar los valores con la tecla (TAB) cambio el cuadro de texto para insertar los valores rápido y con la tecla (ENTER) copia automáticamente el valor que se encuentra en el textbox de Tref.
Estoy utilizando el Visual Studio 2015, aplicación de windows form..
Espero me
1 Respuesta
El primer punto lo soluciona con poner la operación en el evento Chage del textbox Tmin.
Uso visual Studio 2017, debe funcionar también con 2015
Private Sub TxtTdif_TextChanged(sender As Object, e As EventArgs) Handles TxtTdif.TextChanged TxtTdif.Text = FormatNumber(Val(TxtTmax.Text) - Val(TxtTmin.Text), 2) End Sub
Perdón, subo de nuevo el código y la imagen, porque en mis pruebas tome mal los datos:
El código va en el evento Change del textbox "TxtTmin"
Private Sub TxtTmin_TextChanged(sender As Object, e As EventArgs) Handles TxtTmin.TextChanged TxtTdif.Text = FormatNumber(Val(TxtTmax.Text) - Val(TxtTmin.Text), 2) End Sub
Gracias por tu respuesta amigo. Lo intentaré, será que estaba colocando en el evento que no era.
Mi segundo punto es sencillamente Hacer que al presionar la tecla "ENTER" me active el botón copy, el botón copy quiero que me copie lo que está en el último textbox..
Acabo de probar y Excelente amigo, me ha funcionado colocándolo en el evento del resultado.
Lo que me falta es que yo inserto valores tipo Double y hay momentos donde no me agarra los decimales o suplemento lo los resta, ¿se puede hacer una pequeña modificaion para agregarle eso?
¿Ha intentado en el evento enter poner el código para habilitar el botón copy?. Y en el botón copy pone el código que quiere copiar al textbox deseado.
No amigo, para el botón copy no tengo nada aún, vi que con el método "clipboard.SetText()" podría hacerlo, pero no me funcionó...
Amigo, utilicé el mismo evento para las otras text box, basándonos en la imagen para DeltaTmax-Tmin, y me ocurre algo, el valor de DeltaTmax-Tmin = Tdif - Diferencial de T, entonces cuando estoy insertando los números no me hace esa resta al menos que escriba el valor de Tdif primero..
Puede subir imágenes con datos a manera de un ejemplo y explicando las variantes que hay en cada caso, para ver si es necesario otras condiciones para que se obtengan los resultados como los necesita.
Gracias por tu respuesta amigo. Lo intentaré, será que estaba colocando en el evento que no era.
Mi segundo punto es sencillamente Hacer que al presionar la tecla "ENTER" me active el botón copy, el botón copy quiero que me copie lo que está en el último textbox..
Hablo de variable tipo double es para referirme a poder insertar numero en decimales, pero no se como se haría
Pongo ejemplos para que lo adapte a su código:
1.- Para dar formato de numero a cada campo
2.- Copia el valor del Textbox
3.- Habilita botón
Cualquier cosa comenta, saludos
Private Sub TextBox1_LostFocus(sender As Object, e As EventArgs) Handles TextBox1.LostFocus 'Formato de numero a campo TextBox1.Text = FormatNumber(CDbl(TextBox1.Text), 2) End Sub Private Sub TextBox2_LostFocus(sender As Object, e As EventArgs) Handles TextBox2.LostFocus TextBox3.Text = FormatNumber(CDbl(TextBox1.Text) - CDbl(TextBox2.Text), 2) 'Formato de numero a campo Clipboard.SetText(TextBox3.Text) 'Copia el valor que tiene TextBox3.Text TextBox2.Text = FormatNumber(CDbl(TextBox2.Text), 2) 'Realiza la operacion Button1.Enabled = True 'Habilita el boton End Sub
Muchas gracias amigo!, he podido conseguir como copiar el texto del campo con el botón "Copiar", ahora solo me falta dos cositas
1) Que pueda insertar los números e decimales y me realicé las operaciones en decimales
2) Que al presionar "Enter" me ejecute el botón copiar!
Adapte este código a su proyecto y vea si le funciona, envió pantalla y código
'Formato de numero con decimales a campo Private Sub TextBox1_LostFocus(sender As Object, e As EventArgs) Handles TextBox1.LostFocus TextBox1.Text = FormatNumber(CDbl(TextBox1.Text), 2) End Sub 'Formato de numero con decimales a campos Private Sub TextBox2_LostFocus(sender As Object, e As EventArgs) Handles TextBox2.LostFocus TextBox3.Text = (Val(TextBox1.Text) - Val(TextBox2.Text)) TextBox2.Text = FormatNumber(CDbl(TextBox2.Text), 2) TextBox3.Text = FormatNumber(CDbl(TextBox3.Text), 2) End Sub 'Con la tecla Enter activa el boton "Copy" Private Sub TextBox2_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBox2.KeyPress If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Return) Then SendKeys.Send("{TAB}") e.Handled = True Button1.Enabled = True End If End Sub
Gracias nuevamente amigo, ahora si puedo insertar los datos con decimales, pero el cálculo no lo realiza, porque si inserto 45,20 - 35,15 el resultado final me arroja siempre un entero 10,00. Me doy cuenta que me refleja sólo los decimales ", 00"
Una cosa más, el botón no me funcionó, voy a agregar el código que tengo para ver si me puedes ayudar. Y nuevamente muchísimas gracias!
Public Class Form1 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click If TextBox11.Text = "" Then MsgBox("Debe ingresar un número de Temperatura") Else Clipboard.SetText(TextBox11.Text, 0) End If End Sub Private Sub TextBox1_LostFocus(sender As Object, e As EventArgs) Handles TextBox1.LostFocus TextBox1.Text = FormatNumber(CDbl(TextBox1.Text), 2) End Sub Private Sub TextBox8_LostFocus(sender As Object, e As EventArgs) Handles TextBox8.LostFocus TextBox8.Text = FormatNumber(CDbl(TextBox8.Text), 2) End Sub Private Sub TextBox7_LostFocus(sender As Object, e As EventArgs) Handles TextBox7.LostFocus TextBox9.Text = (Val(TextBox1.Text) - Val(TextBox7.Text)) TextBox7.Text = FormatNumber(CDbl(TextBox7.Text), 2) TextBox9.Text = FormatNumber(CDbl(TextBox9.Text), 2) End Sub Private Sub TextBox9_TextChanged(sender As Object, e As EventArgs) Handles TextBox9.TextChanged TextBox10.Text = FormatNumber(Val(TextBox8.Text) - Val(TextBox9.Text), 2) TextBox9.Text = FormatNumber(CDbl(TextBox9.Text), 2) TextBox10.Text = FormatNumber(CDbl(TextBox10.Text), 2) End Sub Private Sub TextBox10_TextChanged(sender As Object, e As EventArgs) Handles TextBox10.TextChanged TextBox11.Text = FormatNumber(20 + Val(TextBox10.Text), 2) TextBox11.Text = FormatNumber(CDbl(TextBox11.Text), 2) End Sub Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click Close() End Sub End Class
Reproduje en un proyecto y me da estos resultados, en el código que subió no vero resultado para Textbox1.text
Va el código y la imagen en ejecución copie el código a su proyecto y vea si le funciona.
Caso contrario si puede enviar el proyecto o subir imagen en ejecución y explicar las inconsistencias, saludos.
Public Class Form1 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click If TextBox11.Text = "" Then MsgBox("Debe ingresar un número de Temperatura") Else Clipboard.SetText(TextBox11.Text, 0) End If End Sub Private Sub TextBox1_LostFocus(sender As Object, e As EventArgs) Handles TextBox1.LostFocus TextBox1.Text = FormatNumber(Val(TextBox1.Text), 2) End Sub Private Sub TextBox8_LostFocus(sender As Object, e As EventArgs) Handles TextBox8.LostFocus TextBox8.Text = FormatNumber(Val(TextBox8.Text), 2) End Sub Private Sub TextBox7_LostFocus(sender As Object, e As EventArgs) Handles TextBox7.LostFocus TextBox9.Text = (Val(TextBox1.Text) - Val(TextBox7.Text)) TextBox7.Text = FormatNumber(Val(TextBox7.Text), 2) TextBox9.Text = FormatNumber(Val(TextBox9.Text), 2) End Sub Private Sub TextBox9_TextChanged(sender As Object, e As EventArgs) Handles TextBox9.TextChanged TextBox10.Text = FormatNumber(Val(TextBox8.Text) - Val(TextBox9.Text), 2) TextBox9.Text = FormatNumber(Val(TextBox9.Text), 2) TextBox10.Text = FormatNumber(Val(TextBox10.Text), 2) End Sub Private Sub TextBox10_TextChanged(sender As Object, e As EventArgs) Handles TextBox10.TextChanged TextBox11.Text = FormatNumber(20 + Val(TextBox10.Text), 2) TextBox11.Text = FormatNumber(Val(TextBox11.Text), 2) End Sub Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click Close() End Sub End Class
Copié el código tal cual y me pasa lo mismo, al escribir los números en decimales me lo cambia por ", 00". Te mando una imagen.
Sea cual sea el valor que inserte me deja los decimales en ", 00" como se ve en la imagen, con el código que le mandé anteriormente si me colocaba los valor Tdif, Tmax y Tmin con decimales, pero la "resta" me salía así como se ve en esta imagen con el "0,00" no se si es algo que tengo activo que no me reconce los decimales..
En cambio con el siguiente código si puedo escribir los números en decimales, pero el resultado me sale sin los decimales..
En las pruebas que tengo sale bien, si puede enviar una copia simulada de su proyecto, quizá pueda identificar el problema y aportar una solución.
Buen día amigo, a que se refiere con enviarle una copia del proyecto ?, Un video o envviarle por correo el archivo ".vb". A cualquiera de las dos, estaraé agradecido, ya que necesito la solución.
Enviar su archivo a mi correo [email protected], saludos
- Compartir respuesta