Recién hoy estoy empezando con .NET en el colegio, y la profesora nos pidió de hacer una calculadora, aca les dejo la que hice yo, les pido POR FAVOR que la critiquen ;D
(Con criticar me refiero solo a criticas constructivas, y hagan el favor de argumentar :rolleyes:)
Code:
Public Class Form1
Dim Num1, Num2 As Integer
Dim Resultado As Single
Dim numeros(9) As Short
Private Sub btnmas_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnmas.Click
Dim comp1 As String = txtnum1.Text
Dim comp2 As String = txtnum2.Text
If comp1 = "" Or comp2 = "" Then
MessageBox.Show("Hay que completar los cuadros de texto con los dígitos del 0 al 9 antes de elegir el operador", "Error")
Else
Num1 = Convert.ToInt32(txtnum1.Text)
Num2 = Convert.ToInt32(txtnum2.Text)
Resultado = Num1 + Num2
txtresultado.Text = Convert.ToSingle(Resultado)
End If
End Sub
Private Sub btnmenos_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnmenos.Click
Dim comp1 As String = txtnum1.Text
Dim comp2 As String = txtnum2.Text
If comp1 = "" Or comp2 = "" Then
MessageBox.Show("Hay que completar los cuadros de texto con los dígitos del 0 al 9 antes de elegir el operador", "Error")
Else
Num1 = Convert.ToInt32(txtnum1.Text)
Num2 = Convert.ToInt32(txtnum2.Text)
Resultado = Num1 - Num2
txtresultado.Text = Convert.ToSingle(Resultado)
End If
End Sub
Private Sub btnpor_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnpor.Click
Dim comp1 As String = txtnum1.Text
Dim comp2 As String = txtnum2.Text
If comp1 = "" Or comp2 = "" Then
MessageBox.Show("Hay que completar los cuadros de texto con los dígitos del 0 al 9 antes de elegir el operador", "Error")
Else
Num1 = Convert.ToInt32(txtnum1.Text)
Num2 = Convert.ToInt32(txtnum2.Text)
Resultado = Num1 * Num2
txtresultado.Text = Convert.ToSingle(Resultado)
End If
End Sub
Private Sub btndiv_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btndiv.Click
Dim comp1 As String = txtnum1.Text
Dim comp2 As String = txtnum2.Text
If comp1 = "" Or comp2 = "" Then
MessageBox.Show("Hay que completar los cuadros de texto con los dígitos del 0 al 9 antes de elegir el operador", "Error")
Else
Num1 = Convert.ToInt32(txtnum1.Text)
Num2 = Convert.ToInt32(txtnum2.Text)
Resultado = Num1 / Num2
txtresultado.Text = Convert.ToSingle(Resultado)
End If
End Sub
Private Sub btnclear_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnclear.Click
txtnum1.Clear()
txtnum2.Clear()
txtresultado.Clear()
End Sub
Private Sub txtnum1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtnum1.KeyPress
If e.KeyChar.IsDigit(e.KeyChar) Then
e.Handled = False
ElseIf e.KeyChar.IsControl(e.KeyChar) Then
e.Handled = False
Else
e.Handled = True
MessageBox.Show("Solo dígitos del 0 al 9 =P", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
End If
End Sub
Private Sub txtnum2_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtnum2.KeyPress
If e.KeyChar.IsDigit(e.KeyChar) Then
e.Handled = False
ElseIf e.KeyChar.IsControl(e.KeyChar) Then
e.Handled = False
Else
e.Handled = True
MessageBox.Show("Solo dígitos del 0 al 9 =P", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
End If
End Sub
End Class
Imagen:
(http://img4.imageshack.us/img4/4103/calc.png)
Ah, una cosa más, la profesora nos dijo que iba a intentar "romperla", hay otra medida de seguridad aparte de validar los textboxs que se pueda implementar?
Saludos!
¿Cómo hiciste el encuadre en negro del programa?
(http://img4.imageshack.us/img4/4103/calc.png)
En paint :xD
Para, vos te referis al del Form o al de la imagen?
Si es del Form, es que tengo ese style del xp, por lo que los programas se ven así en mi PC ;D
Hola ^Arkangel^. A mi parecer la calculadora esta muy facil de "romper"...
Verifique si los valores ingresados son numericos, puede hacerlo como lo muestro en este ejemplo:
Private Sub btnBoton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBoton.Click
If IsNumeric(Me.txtNumero.Text) Then
MsgBox("El valor es numerico :)", MsgBoxStyle.Information)
Else
MsgBox("Introduzca un valor valido :(", MsgBoxStyle.Critical)
End If
End Sub
Saludos ;D
Podrías darme un ejemplo de como se puede "romper" ?
Thx ^^
PD: Argumenten por favor ;D
Seria bueno implementar try - catch para el manejo de errores.
Hola:
Se refiere a esto:
http://msdn.microsoft.com/es-es/library/0yd65esw.aspx
Saludo.
Mis observaciones, linda interfaz, aunque la haria mas chica, usa solo un textbox que por defecto tenga el valor 0, como dicen los companieros del foro valida si solo acepta numeros, y por las dudas pon un try catch en las funciones de suma resta etc y no se como pero valida si se usa mas de un punto decimal como 2.2.3 por ejemplo que esta mal.
Saludos
Usa try en las conversiones, nunca esperes que el usuario ingrese lo que tiene
que ingresar.
Try
Num1 = Convert.ToInt32(txtnum1.Text)
Num2 = Convert.ToInt32(txtnum2.Text)
Resultado = Num1 + Num2
txtresultado.Text = Convert.ToSingle(Resultado)
Catch ex As Exception
messagebox.show("Error!")
End Try
Aunque ya cubres ese error en KeyPress es mejor prevenir.
Gracias por las aclaraciones, ya se lo mostré a la prof. y me dió un par de cosas en las que trabajar, ahora cuando recupere el pendrive les muestro como quedó el code ;D