Calculadora sencilla en VB.NET

Calculadora sencilla en Visual Basic .NET utilizando KeyPress y KeyChar

El formulario de esta aplicación muestra una ventana similar a la de la calculadora de Windows con botones de comando para insertar números, realizar las operaciones matemáticas más frecuentes, almacenar en memoria, poner a cero, etc.I

Detalles del código Visual Basic .NET

Variables para usar a nivel de clase y procedimiento que coloca el cursor en posición de escribir:

Dim Memoria As Double ' Para operaciones de las teclas M
Dim Resultado As Double ' Resultado de la operación
Dim Operador As String ' Operador que hemos tecleado
Dim tocaBorrar As Boolean ' Para saber si hemos pulsado un operador + - * /
 
' Procedimiento que coloca el cursor a la derecha
' de la pantalla del resultado, para añadir dígitos
Private Sub pantallaCursor()
txtPantalla.Focus() ' da el foco a la pantalla
txtPantalla.SelectionStart = 12 ' coloca el cursor a la derecha del todo
txtPantalla.SelectionLength = 0 ' selección de cero caracteres
End Sub

Se muestra la fecha y hora actual:

' mostrar la fecha en el control de texto txtHora
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Me.Top = 50 ' posición y del formulario
'Me.Left = (Screen.PrimaryScreen.WorkingArea.Width - Me.Width)  2 ' posición x del formulario
Me.CancelButton = Me.btApagado
Dim Fecha As Date ' variable de tipo fecha
Fecha = Now()
' doy formato a fecha y pongo en mayúscula la primera letra de cada palabra
txtHora.Text = StrConv((Format(Fecha, "dddd, dd/ MMMM/yyyy, HH:mm ")), VbStrConv.ProperCase)
End Sub

Detectando el evento KeyPress en el cuadro de texto en que se introducen los números se averigua el valor KeyChar (el código ASCII) de la tecla pulsada para dejar pasar solamente los valores que coinciden con números, la coma o la tecla Retroceso, el resto de teclas pulsadas se ignoran:

' Capturar la tecla pulsada cuando el foco está en la pantalla de resultado
Private Sub txtPantalla_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtPantalla.KeyPress
Select Case e.KeyChar ' según el valor de la tecla pulsada
' pasan valores si la tecla pulsada es un número de 0 a 9 o una coma o la tecla Retroceso
Case "1"c, "2"c, "3"c, "4"c, "5"c, "6"c, "7"c, "8"c, "9"c, "0"c, ","c, Chr(8)
e.Handled = False
' ' si la propiedad Handled del objeto e se pone a True indico
' ' que la tecla ha sido "manejada" por el evento, equivale a
' ' indicar que la tecla no ha sido pulsada, pero si la propiedad 
' ' Handled del objeto e se pone a False indico que la tecla
' ' todavía no ha sido "manejada" por el evento y se envía.
Case Else ' en los demás casos, no se pasa la pulsación
e.Handled = True
End Select
End Sub

El botón Calcular realiza la operación matemática seleccionada almacenando el valor del cuadro de texto en la variable Resultado y aplicando la operación elegida:

' Operación matemática que estoy haciendo
Private Sub Calcular()
Select Case Operador ' operador en uso
Case ""
If txtPantalla.Text.Length > 0 Then
Resultado = txtPantalla.Text
Else ' si la pantalla está vacía
Resultado = 0.0 ' simplemente pongo Resultado a cero
End If
Case "+"
If txtPantalla.Text.Length > 0 Then
Resultado = Resultado + txtPantalla.Text
Else ' si la pantalla está vacía
Resultado = 0.0 ' simplemente pongo Resultado a cero
End If
Case "-"
If txtPantalla.Text.Length > 0 Then
Resultado = Resultado - txtPantalla.Text
Else ' si la pantalla está vacía
Resultado = 0.0 ' simplemente pongo Resultado a cero
End If
Case "*"
If txtPantalla.Text.Length > 0 Then
Resultado = Resultado * txtPantalla.Text
Else ' si la pantalla está vacía
Resultado = 0.0 ' simplemente pongo Resultado a cero
End If
Case "/"
If txtPantalla.Text.Length > 0 Then
Resultado = Resultado / txtPantalla.Text
Else ' si la pantalla está vacía
Resultado = 0.0 ' simplemente pongo Resultado a cero
End If
End Select
txtPantalla.Text = Math.Round(Resultado, 3)
tocaBorrar = True ' para llevar acumulada la operación
End Sub

2 respuestas a “Calculadora sencilla en VB.NET”

  1. Veo que estás aprendiendo y superándote mucho.
    ¿La de la foto es tu “SANTA” REME?

    1. Hola, Antonio, sí, es una foto de Reme de hace unos años que puse cuando hice por primera vez este ejercicio y la he dejado ahí.
      Salu2.

Comentarios cerrados.