¿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

Respuesta
1

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

El Punto 2 no me quedo claro lo que necesita, dislcupe.

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.

¿La inserción de de valores ti Double es para guardar en la base de datos? ¿O a que se refiere?

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

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas