C# :: Aufgabe #8 :: Lösung #1
12 Lösungen

#8
TextBox welche nur Integer zulässt
Anfänger - C#
von Gustl
- 15.08.2012 um 09:30 Uhr
Erstellen Sie eine Anwendung mit einer TextBox, welche nur Integer zulässt.
Also die Zahlen-Tasten 0-9, NumPad 0-9, Back, Delete, Tab, Left, Down, Right, Up, OemMinus, Enter, Subtract und Strg-C,X,V.
Nach drücken von Enter soll eine MessageBox erscheinen die den Inhalt der TextBox ausgibt.
Also die Zahlen-Tasten 0-9, NumPad 0-9, Back, Delete, Tab, Left, Down, Right, Up, OemMinus, Enter, Subtract und Strg-C,X,V.
Nach drücken von Enter soll eine MessageBox erscheinen die den Inhalt der TextBox ausgibt.
#1

von Isparia (690 Punkte)
- 07.11.2012 um 22:00 Uhr

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; //man hätte die Aufgabe auch über Reguläre ausdrücke mit hilfe der RegEx klasse //lösen können aber ich wollte es heute mal umständlich namespace trainyourprogrammer_aufgabe8 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void textBox1_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Return) { MessageBox.Show(textBox1.Text); } } private void textBox1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e) { if ( (e.KeyCode == Keys.Delete) || (e.KeyCode == Keys.Down) || (e.KeyCode == Keys.Up) || (e.KeyCode == Keys.Left) || (e.KeyCode == Keys.Right) || (e.KeyCode == Keys.Back) ) { } else { textBox1.Select(textBox1.Text.Length, 0); } } private void textBox1_TextChanged(object sender, EventArgs e) { string test = textBox1.Text; string eingabe; long k; bool zahlVorhanden; int i; //überprüfen auf Anzahl der zeichen im string(Textbox1.Text.Length == test.Length) if (test.Length > 0) { //Wenn der String mehr als ein Zeichen hat wird das letzte Zeichen extrahiert eingabe = test.Substring(test.Length - 1); } else { //Wenn der String keine Zeichen mehr beinhaltet wird dieser als ein Zeichen //und als eingegebener Wert genohmen. eingabe = test; } switch (eingabe) //welches Zeichen ist das letzte zeichen { case "1": break; case "2": break; case "3": break; case "4": break; case "5": break; case "6": break; case "7": break; case "8": break; case "9": break; case "0": break; case "-": // ist das zuletzt eingegebene Zeichen ein Minuszeichen("-") wird der Wert ins negative gewandelt // sollte der Wert welcher in der Textbox stehen schon negativ sein wird das Minus gelöscht // ein Integer kann ja nicht negativer als negativ sein alternativ könnte man // den Wert wieder ins positive wandeln int j; zahlVorhanden = Int32.TryParse(textBox1.Text.Substring(0,textBox1.Text.Length-1), out j); if (j> 0) { textBox1.Text = "-" + test; } else { Letztes_Zeichen_Del(test); } break; default: if (textBox1.Text.Length > 0) { Letztes_Zeichen_Del(test); } break; } // überprüfen ob der Wert im wertebereich eines Int32 liegt, wenn ja wird der Curser an die letze Stelle gesetzt // falls dies nicht der Fall ist wird geprüft ob es es sich um eine Zahl handelt welche im int64 bereich liegt also ein long Wert // ist dies der Fall so wird eine Messagebox geöffnet welche darauf hinweisst das der Wert über dem Wertebereich von Int32 liegt, // des weiteren wird die zuletzt eingegebene Ziffer gelöscht. if (Int32.TryParse(textBox1.Text, out i)) { textBox1.Select(textBox1.Text.Length, 0); } else { if (Int64.TryParse(textBox1.Text, out k)) { MessageBox.Show("Wertebereich von Int 32 überschritten\nDie größte Integer32 Variabele kann maximal " + Convert.ToString(Int32.MaxValue) + " sein\nDie zuletzt hinzugefügte Ziffer wird entfernt!"); textBox1.Text = textBox1.Text.Substring(0, textBox1.Text.Length - 1); } else//löschen des letzen zeichens bis da wieder eine zahl steht { Letztes_Zeichen_Del(textBox1.Text); } } } private void Letztes_Zeichen_Del(string test) { textBox1.Text = test.Substring(0, test.Length - 1); } } }
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1