[VB.NET] Kalkulator

0

Mam kalkulator do napisania http://img463.imageshack.us/img463/7838/calcvf3.jpg Pytanie polega na tym, jak zrobić, żeby po naciśnięciu klawisza "+", a potem "=" otrzymać wynik. Do reszty działań zrobię sobie analogicznie. Mój kod prezentuje się w ten sposób:

Public Class Form1
    Dim l1, l2 As String
    Dim ktora As Integer = 1
    Dim dzialanie As Integer = 0

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        If ktora = 1 Then
            l1 = l1 + "1"
            TextBox1.Text = l1
        Else
            l2 = l2 + "1"
            TextBox1.Text = l2
        End If
    End Sub

    Private Sub Button10_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button10.Click
        If ktora = 1 Then
            l1 = l1 + "0"
            TextBox1.Text = l1
        Else
            l2 = l2 + "0"
            TextBox1.Text = l2
        End If
    End Sub

    Private Sub Button11_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button11.Click
        If ktora = 1 Then
            l1 = l1 + ","
            TextBox1.Text = l1
        Else
            l2 = l2 + ","
            TextBox1.Text = l2
        End If
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        If ktora = 1 Then
            l1 = l1 + "2"
            TextBox1.Text = l1
        Else
            l2 = l2 + "2"
            TextBox1.Text = l2
        End If
    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        If ktora = 1 Then
            l1 = l1 + "3"
            TextBox1.Text = l1
        Else
            l2 = l2 + "3"
            TextBox1.Text = l2
        End If
    End Sub

    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
        If ktora = 1 Then
            l1 = l1 + "4"
            TextBox1.Text = l1
        Else
            l2 = l2 + "4"
            TextBox1.Text = l2
        End If
    End Sub

    Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
        If ktora = 1 Then
            l1 = l1 + "5"
            TextBox1.Text = l1
        Else
            l2 = l2 + "5"
            TextBox1.Text = l2
        End If
    End Sub

    Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
        If ktora = 1 Then
            l1 = l1 + "6"
            TextBox1.Text = l1
        Else
            l2 = l2 + "6"
            TextBox1.Text = l2
        End If
    End Sub

    Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click
        If ktora = 1 Then
            l1 = l1 + "7"
            TextBox1.Text = l1
        Else
            l2 = l2 + "7"
            TextBox1.Text = l2
        End If
    End Sub

    Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button8.Click
        If ktora = 1 Then
            l1 = l1 + "8"
            TextBox1.Text = l1
        Else
            l2 = l2 + "8"
            TextBox1.Text = l2
        End If
    End Sub

    Private Sub Button9_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button9.Click
        If ktora = 1 Then
            l1 = l1 + "9"
            TextBox1.Text = l1
        Else
            l2 = l2 + "9"
            TextBox1.Text = l2
        End If
    End Sub
    Function silnia(ByVal n As Integer)
        If n = 0 Then
            Return 1
        Else
            Return n * silnia(n - 1)
        End If
    End Function

    Private Sub Button17_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button17.Click
        TextBox1.Text = CStr(silnia(CInt(l1)))
        ktora = 1
        l1 = ""
        l2 = ""
        dzialanie = 0
    End Sub

    Private Sub Button18_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button18.Click
        Select Case dzialanie
            Case 1
                TextBox1.Text = CStr(CDbl(l1) * CDbl(l2))
            Case 2
                TextBox1.Text = CStr(CDbl(l1) + CDbl(l2))
            Case 3
                TextBox1.Text = CStr(CDbl(l1) - CDbl(l2))
            Case 4
                If (CDbl(l2) = 0) Then
                    TextBox1.Text = "Nie dziel przez zero"
                Else
                    TextBox1.Text = CStr(CDbl(l1) / CDbl(l2))
                End If
            Case 5
                TextBox1.Text = CStr(CDbl(l1) ^ CDbl(l2))
            Case Else
                TextBox1.Text = "Jakie działanie?"
        End Select
        ktora = 1
        l1 = ""
        l2 = ""
        dzialanie = 0
    End Sub

    Private Sub Button19_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button19.Click
        If ktora = 1 Then
            l1 = ""
        Else
            l2 = ""
        End If
        TextBox1.Text = "0"
    End Sub

    Private Sub Button20_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button20.Click
        End
    End Sub
End Class
0

Zrób tak żeby po naciśnięciu jakiegoś klawisza np. / zapisaywalo do jednej zmiennej wartosc pola i ustawialo jakąś inną zmienną (np tekstowa) jaki operator był wybrany (np operator="/";). A po naciśnięciu przycisku = zapisywało wartość pola do drugiej zmiennej i w zależności od wybranego operatora robiło robiło odpowiednie działania. Mały przykład w C# (przetłumacz sobie na VB):

// gdzies deklaracja:
int zmienna1, zmienna2;
string op;
//...
protected void PrzyciskZPlusem_Click(object sender, EventArgs e)
{
  zmienna=int.Parse(PoleTekstowe.Text);
  op="+";
}
protected void PrzyciskRowne_Click(object sender, EventArgs e)
{
  int wynik;
  zmienna2=int.Parse(PoleTekstowe.Text);
  if (op=="+")
    wynik=zmienna1+zmienna2;
  // itd.
  PoleTekstowe.Text=wynik.ToString();
}
//...

1 użytkowników online, w tym zalogowanych: 0, gości: 1