C# :: Aufgabe #8
12 Lösungen

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.
Lösungen:

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); } } }

using System; using System.Windows.Forms; namespace NurInt { public partial class Form1 : Form { int a; public Form1() { InitializeComponent(); } private void textBox1_KeyDown(object sender, KeyEventArgs e) { if(e.KeyCode == Keys.Enter) if (int.TryParse(textBox1.Text, out a)) MessageBox.Show(a.ToString()); } } }
Viel kürzer wirds nicht
C#-Code

Regex rgx = new Regex(@"\D"); private void txt_TextChanged(object sender, EventArgs e) { txt.Text = rgx.Replace(txt.Text, ""); }

private void textBox1_KeyPress(object sender, KeyPressEventArgs e) { e.Handled = !char.IsDigit(e.KeyChar) & !char.IsControl(e.KeyChar); }

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace boxUebung { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void textBox1_KeyPress(object sender, KeyPressEventArgs e) { if (!char.IsNumber(e.KeyChar)) { e.Handled = true; } if (e.KeyChar == '+') { textBox1.SelectedText = "+"; e.Handled = true; } if (e.KeyChar == '-') { textBox1.SelectedText = "-"; e.Handled = true; } /*if(e.KeyChar != (char)Keys.Back) { e.Handled = false; }*/ if (e.KeyChar == (char)13) { MessageBox.Show(textBox1.Text); } } private void textBox1_KeyDown(object sender, KeyEventArgs e) { if (e.KeyData == (Keys.C | Keys.Control)) { textBox1.Copy(); e.Handled = true; } else if (e.KeyData == (Keys.V | Keys.Control)) { textBox1.Paste(); e.Handled = true; } } } }

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; using System.Windows.Forms; using MessageBox = System.Windows.Forms.MessageBox; namespace IntBox { /// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainWindow :Window { public MainWindow() { InitializeComponent(); } private void text1_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)//Zum ausführen über der Entertaste { if (e.Key == Key.Return) { MessageBox.Show(text1.Text); } } private void text1_TextChanged(object sender, TextChangedEventArgs e)//überprüft ob es sich um ein Int Wert handelt { try { UInt16 Variable = Convert.ToUInt16(text1.Text); } catch (FormatException) { text1.Clear(); } } } }

private void textBox1_KeyPress(object sender, KeyPressEventArgs e) { e.Handled = !char.IsNumber(e.KeyChar) & !char.IsControl(e.KeyChar); }
Kurz und einfach.
C#-Code

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Text.RegularExpressions; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; namespace WpfApplication3 { /// <summary> /// Interaktionslogik für MainWindow.xaml /// </summary> public partial class MainWindow : Window { Regex reg = new Regex("\\D"); public MainWindow() { InitializeComponent(); } private void textBox_TextChanged(object sender, TextChangedEventArgs e) { textBox.Text = reg.Replace(textBox.Text, ""); //Cursor wieder am Ende des Textfeldes platzieren. textBox.Select(textBox.Text.Length, 0); } } }

namespace training_aufgabe8 { public partial class frmMain : Form { public frmMain() { InitializeComponent(); } private void tbxEingabe_KeyPress(object sender, KeyPressEventArgs e) { char ch = e.KeyChar; if (!Char.IsDigit(ch) && ch != 8 && ch != 46 && ch != 189 && ch != 13 && ch != 109 && !Char.IsControl(ch)) { e.Handled = true; MessageBox.Show("Bitte gebe nur Zahlen ein!"); } if (ch == 13) { MessageBox.Show(Convert.ToString(tbxEingabe.Text)); } } } }

using System; using System.Windows.Forms; public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void textBox1_TextChanged(object sender, EventArgs e) { if (!int.TryParse(textBox1.Text, out int _)) { try { textBox1.Text = textBox1.Text.Substring(0, textBox1.Text.Length - 1); textBox1.SelectionStart = textBox1.Text.Length; } catch { // Ignored } } } }

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; namespace TrainYourProgrammer8_neu { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void textBox1_KeyPress(object sender, KeyPressEventArgs e) { e.Handled = !char.IsDigit(e.KeyChar) && !char.IsControl(e.KeyChar); } private void textBox1_KeyDown(object sender, KeyEventArgs e) { if (e.KeyData == Keys.Enter) { MessageBox.Show(textBox1.Text); } } } }

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; namespace TrainYourProgrammer8 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void textBox1_TextChanged(object sender, EventArgs e) { } private void textBox1_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Return) { MessageBox.Show(String.Format("Sie haben {0} eingegeben.", textBox1.Text)); } } private void nurInt(object sender, KeyPressEventArgs e) { if (e.KeyChar != '\b' && e.KeyChar != '-') { if (Char.IsControl((e.KeyChar))) { } else if (!Char.IsDigit(e.KeyChar)) { e.Handled = true; } } } } }