Entwickler-Ecke

WPF / Silverlight - TextBox Zahlenlimit


JelliesBabe - So 03.04.16 00:29
Titel: TextBox Zahlenlimit
Halli Hallo,

Ich bräuchte mal wieder Hilfe...


Ich brauche eine TextBox, in der nur Zahlen eingetragen werden dürfen. Und keine höhere als 20.000.

Wenn jemand eine Lösung kennt, wäre ein Traum. :D


Moderiert von user profile iconChristian S.: Topic aus Sonstiges (.NET) verschoben am So 03.04.2016 um 00:40


C# - So 03.04.16 00:32

Hey,

ich denke du brauchst keine TextBox, sondern ein NumericUpDown [http://www.c-sharpcorner.com/uploadfile/mahesh/numericupdown-in-C-Sharp/]. Ich gehe mal davon aus, dass du WinForms verwendest. In WPF gibts das Control nämlich nicht.


JelliesBabe - So 03.04.16 00:33

Mein Problem ist, ich habe genau dieses Ding nicht. Ich schreibe in WPF...


C# - So 03.04.16 00:36

Dann verweise ich auf das ExtendedWpfToolkit [http://wpftoolkit.codeplex.com/]. Da gibts so ein Control für WPF.

// Nachtrag
Und falls du wirklich selbst eins implementieren willst, google mal danach. Auf StackOverflow gibt es massig Beispiele.
Ich weiß, dass ich gerade keine überragende Hilfe bin, aber ich bin müde und will ins Bett - wo ich jetzt auch hingehe.

Gute Nacht.


Christian S. - So 03.04.16 00:54

Hallo,

user profile iconJelliesBabe hat folgendes geschrieben Zum zitierten Posting springen:
Ich schreibe in WPF...
Dann mach das doch demnächst auch in der entsprechenden Sparte ;)

Wenn Du verhindern willst, dass etwas anderes als Ziffern in die Textbox eingegeben werden sollen, kannst Du das im PreviewKeyDown-Event machen, mit folgender Methode (die Du im XAML entsprechend eintragen musst):


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
    private static bool IsNumericKey(Key key)
    {
      switch (key)
      {
        case Key.D0:
        case Key.D1:
        case Key.D2:
        case Key.D3:
        case Key.D4:
        case Key.D5:
        case Key.D6:
        case Key.D7:
        case Key.D8:
        case Key.D9:

        case Key.NumPad0:
        case Key.NumPad1:
        case Key.NumPad2:
        case Key.NumPad3:
        case Key.NumPad4:
        case Key.NumPad5:
        case Key.NumPad6:
        case Key.NumPad7:
        case Key.NumPad8:
        case Key.NumPad9:
          return true;

        default:
          return false;
      }
    }

    private void textBox_PreviewKeyDown(object sender, KeyEventArgs e)
    {
      if (!IsNumericKey(e.Key))
        e.Handled = true;
    }


Das verhindert aber nicht, dass da Zahlen größer 20.000 eingetragen werden. Da muss man allerdings auch vorher wissen, was denn passieren soll, wenn das passiert. Es würde sich eventuell auch anbieten, das erst zu prüfen, wenn der Fokus die Textbox verlässt. Auch eine Rückmeldung an den Nutzer kann sinnvoll sein. Da wären ein paar Informationen von Dir gut, was Du möchstest :)

Viele Grüße
Christian


Schafschaf - Mo 04.04.16 11:47

Da musst du dir überhaupt keine Arbeit machen.
Ich empfehle dir hier das UpDownControl von Syncfusion.

http://help.syncfusion.com/wpf/updown/getting-started