Hallo zusammen,
ich will, dass man in eine Combobox nur Zahlen eingeben kann.
Mit den beiden folgenden Methoden funktioniert es nicht.
Methode 1: (static nur weil es aus einer helper klasse ohne instanz kommt)
Methode 2:
Beides funktioniert bei Textboxes einwandfrei,
danke für eure Hilfe!
ich will, dass man in eine Combobox nur Zahlen eingeben kann.
Mit den beiden folgenden Methoden funktioniert es nicht.
Methode 1: (static nur weil es aus einer helper klasse ohne instanz kommt)
Code:
// ob ein nicht numerisches Zeichen eingegeben wurde
static bool nonNumberEntered = false;
// Keydown_event um rauszufinden, welche Taste gedrückt wurde
public static void numbersOnlyCB_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
nonNumberEntered = false;
//Zahl (oberer Teil des Keyboards)
if (e.KeyCode < Keys.D0 || e.KeyCode > Keys.D9)
{
//Zahl aus "Num" Bereich
if (e.KeyCode < Keys.NumPad0 || e.KeyCode > Keys.NumPad9)
{
if(e.KeyCode != Keys.Back)
{
if(e.KeyCode !=Keys.Delete)
{
//eine nicht erlaubte Taste wurde gedrückt
nonNumberEntered = true;
}
}
}
}
else if(e.Shift)
{
nonNumberEntered = true;
}
}
//Event nach KeyDown Event, verwendet zum blocken der Eingabe eines unerlaubten Zeichens
public static void numbersOnlyCB_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
if (nonNumberEntered == true)
{
//das Zeichen kann nicht eingegeben werden
e.Handled = true;
}
}
Methode 2:
Code:
// KeyPress Event der Textbox
public static void numbersOnly_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
if(!IsValidNumber(e.KeyChar.ToString()))
e.Handled = true;
}
private static bool IsValidNumber(string s)
{
string[] arr = new string[]{"1","2","3","4","5","6","7","8","9"};
for(int i = 0; i < arr.Length; i++)
{
if(arr[i] == s.ToLower())
{
return true;
}
}
return false;
}
Beides funktioniert bei Textboxes einwandfrei,
danke für eure Hilfe!