Problem Taschenrechner plus minus Taste

  • C#
  • .NET (FX) 4.0

Es gibt 19 Antworten in diesem Thema. Der letzte Beitrag () ist von Murdoc.

    Problem Taschenrechner plus minus Taste

    Folgendes Problem. Ich habe einen Taschenrechner Programmiert und wollte zusätzlich zur Eingabe mit Buttons auch die Tastatur nehmen. Also habe ich eine Ausnahme hinzugefügt.

    C#-Quellcode

    1. private void textBoxergebnis_KeyPress(object sender, KeyPressEventArgs e) // Buchstaben eingabe Sperren
    2. {
    3. if (e.KeyChar != '\b' && e.KeyChar != ',' && e.KeyChar != '-' && e.KeyChar != '+')
    4. //Copy & paste zulassen
    5. if (Char.IsControl((e.KeyChar)))
    6. {
    7. }
    8. //Nur Nummern zulassen
    9. else if (!Char.IsDigit(e.KeyChar))
    10. {
    11. e.Handled = true;
    12. }
    13. else if (!Char.IsDigit(e.KeyChar))
    14. {
    15. e.Handled = true;
    16. }

    Wenn ich über den Button minus als Beispiel gerechnet habe hatte ich diesen Code Genutzt.

    C#-Quellcode

    1. private void button6_Click(object sender, EventArgs e) // Minus
    2. {
    3. if (Bedienung == 0 || Bedienung == 10)
    4. {
    5. Speicher = decimal.Parse(textBoxergebnis.Text);
    6. textBoxergebnis.Text = "";
    7. Bedienung = 2;
    8. }
    9. textBoxergebnis.Focus();
    10. }

    Diesen Code für Minus habe ich auch einfach mal für den Button Minus mit Keydown und Keypress ausprobiert jedoch hat er dort nicht funktioniert.
    Sprich statt das wenn ich die minus taste drücke er es speichert und das feld leert schreibt er nur ein Minus.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „EaranMaleasi“ ()

    Hallo Moritz,

    mir fällt auf, dass du kein Event mit "handles" an die Sub geschrieben hast.
    Fehlt das nur in deinem Beispiel oder hast du es in deiner Programmierung vergessen?

    Wenn ja dann versuch es mal mit

    VB.NET-Quellcode

    1. private void textBoxergebnis_KeyPress(object sender, KeyPressEventArgs e) handles textBoxergebnis.KeyPress
    We are all suckerz for something ...
    Wie meinst du das also Quasi dieses handles und danach den code

    C#-Quellcode

    1. {
    2. if (Bedienung == 0 || Bedienung == 10)
    3. {
    4. Speicher = decimal.Parse(textBoxergebnis.Text);
    5. textBoxergebnis.Text = "";
    6. Bedienung = 1;
    7. }
    8. textBoxergebnis.Focus();
    9. }
    oder was genau
    JA genau. das handle sorgt dafür, dass deine Sub aufgerufen wird wenn der Anwender eine Taste drückt:

    VB.NET-Quellcode

    1. ​private void textBoxergebnis_KeyPress(object sender, KeyPressEventArgs e) handles textBoxergebnis.KeyPress// Buchstaben eingabe Sperren
    2. {
    3. if (e.KeyChar != '\b' && e.KeyChar != ',' && e.KeyChar != '-' && e.KeyChar != '+')
    4. //Copy & paste zulassen
    5. if (Char.IsControl((e.KeyChar)))
    6. {
    7. }
    8. //Nur Nummern zulassen
    9. else if (!Char.IsDigit(e.KeyChar))
    10. {
    11. e.Handled = true;
    12. }
    13. else if (!Char.IsDigit(e.KeyChar))
    14. {
    15. e.Handled = true;
    16. }
    We are all suckerz for something ...
    Habe ja folgenden code kann ich dahinter einfach das mit handle schreiben ?

    C#-Quellcode

    1. private void textBoxergebnis_KeyPress(object sender, KeyPressEventArgs e)
    2. // Buchstaben eingabe Sperren
    3. {
    4. if (e.KeyChar != '\b' && e.KeyChar != ',' && e.KeyChar != '-' && e.KeyChar != '+')
    5. //Copy & paste zulassen
    6. if (Char.IsControl((e.KeyChar)))
    7. {
    8. }
    9. //Nur Nummern zulassen
    10. else if (!Char.IsDigit(e.KeyChar))
    11. {
    12. e.Handled = true;
    13. }
    14. else if (!Char.IsDigit(e.KeyChar))
    15. {
    16. e.Handled = true;
    17. }
    Mein Fehler tut mir leid.

    Ich bin von vb ausgegangen. An den Events sollte es nicht liegen. Nehme an, die subs hast du von der Programmierumgebung erstellen lassen.

    Hab mir deinen Code nochmal angeschaut. Du möchtest also beim Drücken auf "-" folgenden Code ausführen?

    C#-Quellcode

    1. if (Bedienung == 0 || Bedienung == 10)
    2. {
    3. Speicher = decimal.Parse(textBoxergebnis.Text);
    4. textBoxergebnis.Text = "";
    5. Bedienung = 2;
    6. }
    7. textBoxergebnis.Focus();


    dann würde ich die Programmierung auch im keyPress unterbringen wenn Minus gedrückt wurde. Also:

    C#-Quellcode

    1. if (e.KeyChar == '-')
    2. {
    3. if (Bedienung == 0 || Bedienung == 10)
    4. {
    5. Speicher = decimal.Parse(textBoxergebnis.Text);
    6. textBoxergebnis.Text = "";
    7. Bedienung = 1;
    8. }
    9. textBoxergebnis.Focus();
    10. }


    Im Moment wird sie ja nur ausgeführt wenn du den Button6 drückst

    oder hab ich das falsch verstanden? :)
    We are all suckerz for something ...
    Ja momentan wird - nur ausgeführt wenn ich den button drücke jedoch klappt es immer noch nicht. Das minus wird angezeigt aber nicht wie beim button ausgeführt.

    C#-Quellcode

    1. private void button6_KeyPress(object sender, KeyPressEventArgs e)
    2. {
    3. if (e.KeyChar == '-')
    4. {
    5. if (Bedienung == 0 || Bedienung == 10)
    6. {
    7. Speicher = decimal.Parse(textBoxergebnis.Text);
    8. textBoxergebnis.Text = "";
    9. Bedienung = 1;
    10. }
    11. textBoxergebnis.Focus();
    12. }



    Noch eine idee was ich falsch mache?

    Beiträge zusammengefügt. ~Thunderbolt

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Thunderbolt“ ()

    Meinst du ernsthaft das:

    C#-Quellcode

    1. private void textBoxergebnis_KeyPress(object sender, KeyPressEventArgs e) // Buchstaben eingabe Sperren
    2. {
    3. if (e.KeyChar != '\b' && e.KeyChar != ',' && e.KeyChar != '-' && e.KeyChar != '+')
    4. //Copy & paste zulassen
    5. if (Char.IsControl((e.KeyChar)))
    6. {
    7. }
    8. //Nur Nummern zulassen
    9. else if (!Char.IsDigit(e.KeyChar))
    10. {
    11. e.Handled = true;
    12. }
    13. else if (!Char.IsDigit(e.KeyChar))
    14. {
    15. e.Handled = true;
    16. }


    ?
    Gruß Murdoc
    Oder auch das hier

    C#-Quellcode

    1. private void button6_KeyPress(object sender, KeyPressEventArgs e)
    2. {
    3. if (e.KeyChar == '-')
    4. {
    5. if (Bedienung == 0 || Bedienung == 10)
    6. {
    7. Speicher = decimal.Parse(textBoxergebnis.Text);
    8. textBoxergebnis.Text = "";
    9. Bedienung = 1;
    10. }
    11. textBoxergebnis.Focus();
    12. }

    Kannst dir den beitrag ja einfach mal durchlesen dann siehst du denke ich was ich habe und was ich möchte
    Das hier ist ebenfalls der gleiche
    code für das drücken der minus taste. DIeser code funktioniert jedoch nicht da in die textbox ein minus geschrieben wirddstatt die berechnung.

    C#-Quellcode

    1. private void button6_KeyPress(object sender, KeyPressEventArgs e)
    2. {
    3. if (e.KeyChar == '-')
    4. {
    5. if (Bedienung == 0 || Bedienung == 10)
    6. {
    7. Speicher = decimal.Parse(textBoxergebnis.Text);
    8. textBoxergebnis.Text = "";
    9. Bedienung = 1;
    10. }
    11. textBoxergebnis.Focus();
    12. }