Announcement

Collapse
No announcement yet.

Zahlen aus TextBoxen in berechnung einbinden??

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Zahlen aus TextBoxen in berechnung einbinden??

    Hi, muss ein programm schreiben in dem ich 3 Zahlen eingeben kann um diese in eine Quadratische Gleichung zu setzen und diese dann zu berechnen.
    Buchstaben und Zahlen habe ich schon ausgeschlossen, ich weiss nur nicht wie ich die eingaben aus den 3 Textboxen nun berechnen kann. hier der bisherige Code:

    [highlight=vbnet]Public Class Form1

    'Name
    'MatrikelNr.
    Dim Zahl1, Zahl2, Zahl3 As Integer

    Private Sub TextBox1_KeyPress(ByVal sender As System.Object, _
    ByVal e As System.Windows.Forms.KeyPressEventArgs) _
    Handles TextBox1.KeyPress
    Select Case Asc(e.KeyChar)
    Case 48 To 57, 8, 44
    Case Else
    e.Handled = True
    End Select
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) _
    Handles Button1.Click

    Label6.Text = Convert.ToString(-(Zahl2 / 2 * Zahl1) + (((Zahl2 ^ 2) - (4 * Zahl1 * Zahl3)) / ((4 * Zahl1) ^ 2)) ^ (1 / 2))

    Label8.Text = Convert.ToString(-(Zahl2 / 2 * Zahl1) - (((Zahl2 ^ 2) - (4 * Zahl1 * Zahl3)) / ((4 * Zahl1) ^ 2)) ^ (1 / 2))

    End Sub

    End Class[/highlight]
    Zuletzt editiert von Jürgen Thomas; 04.05.2010, 11:25. Reason: [highlight=vbnet] eingefügt, künftig bitte selbst erledigen! Außerdem sind mehrfache Wiederholungen und Leerzeilen überflüssig

  • #2
    Hallo und willkommen!

    Erstens: Du kannst ein und denselben EventHandler an mehrere Controls binden.
    [highlight=vbnet] Private Sub TextBoxes_KeyPress(ByVal sender As System.Object, _
    ByVal e As System.Windows.Forms.KeyPressEventArgs) _
    Handles TextBox1.KeyPress, TextBox2.KeyPress, TextBox3.KeyPress[/highlight]
    Wie genau die Syntax lautet, weiß ich nicht (ich arbeite mit C#), aber so scheint es laut SDK-Doku/MSDN korrekt zu sein. Dann brauchst du diesen Code nur einmal.

    Zweitens: Das Konvertieren einer Eingabe in eine Zahl brauchst du doch nicht während der Eingabe, sondern erst beim Rechnen, also beim Button-Click. Also genügt im KeyPress das, was du schon hast, nämlich unzulässige Zeichen zu übergehen.

    Drittens: Du benötigst beim Button-Click eine Konvertierung der gesamten Eingabe in eine Zahl. Dazu gibt es viele Möglichkeiten; die sicherste davon lautet:
    [highlight=vbnet]Dim number As Integer
    Dim result As Boolean = Int32.TryParse(value, number)
    If result Then 'rechne mit number weiter[/highlight]
    Weil du vorher schon Eingabeprüfungen vorgenommen hast, kannst du auch die "unsichere" Variante Parse verwenden:
    [highlight=vbnet]zahl1 = Int32.Parse(TextBox1.Text)[/highlight]
    Zusätzlich bietet VB noch eine eigene CInt-Funktion an. Du hast die Wahl!

    Viertens: Das Ergebnis muss in der Tat in einen String konvertiert werden. Aber unter .NET hat alles (ALLES!) eine ToString-Methode. Convert.ToString ist also niemals sinnvoll, sondern benutze einfach:
    [highlight=vbnet]Dim ergebnis As Integer
    ergebnis = (Zahl2 / 2 * Zahl1) 'usw.
    label6.Text = ergebnis.ToString()[/highlight]

    Fünftens: Bezeichnungen wie textBox3 und label8 gehören verboten, siehe .NET Richtlinien für Namen oder [wikibooks] .NET Namenskonventionen (als Kurzfassung).

    Viel Erfolg! Jürgen

    // Nachtrag
    1. (nach Martins Hinweis): Warum lässt du überhaupt das Komma zu, wenn du dich nur mit Integers befassen willst laut Dim-Anweisung?

    2. Für die Eingabe von Zahlen gibt es MaskedTextBox und NumericUpDown. Letzteres vereinfacht das Konvertieren erheblich, ist aber nicht so komfortabel in der Eingabe.
    Zuletzt editiert von Jürgen Thomas; 04.05.2010, 13:06.

    Comment


    • #3
      Hi,

      kurze Bemerkung meinerseits: neben der Tastenabfangen lohnt es sich auch, das Validating-Event zu implementieren, nur falls irgendein DAU so einen Wert wie 3,141,23 eingibt, dann kann man ihm schon vorher sagen, dass eine Zahl nur ein Komma haben darf

      Gruß
      Martin

      Comment


      • #4
        Vielen Dank für die Antworten, aber ich versteh ehrlich gesagt nicht mal die Hälfte davon, Ich habe mit VB angefangen weil ichs für ein Praktikum im Studium brauche und fange bei 0 an.

        Comment


        • #5
          Und was willst du uns damit sagen? Dass unsere Anmerkungen für die Katz waren? Wenn du bei null anfängst, dann musst du auch schrittweise vorgehen und dich konsequent einarbeiten, z.B. mit dem openbook visualbasic_2008, und nicht irgendein Spezialproblem ansprechen (wenn es auch einfache Fragen sind), für die dir die Grundlagen noch fehlen. Jürgen

          Comment

          Working...
          X