VisualBasic Wie in Textbox nur Zahlen zulassen? Wie DataTable sortieren?

Jägermeister_84

Lt. Commander
Registriert
Feb. 2005
Beiträge
1.106
1. Problem:
kann mir einer sagen, wie ich es schaffe, das in eine Textbox nur Zahlen eintragbar sind?
Alternative: wie überprüfe ich, ob der Inhalt der Textbox nur aus Zahlen besteht?

2. Problem:
wie kann ich eine DataTable nach einer bestimmten Spalte sortieren?

Danke für eure Hilfe!
 
Könntest du evtl. noch genauer sagen in welcher Sprache du arbeitest ?

//edit:
Grade erst gesehn das es um VB geht... sorry :)


zu 1.:
RegularExpressions

zu 2.:
BindingSource

(ich vermute mal es geht um .NET)
 
Zuletzt bearbeitet:
Am performantesten wäre vielleicht sogar eine eigene Textbox zu erstellen (natürlich abgeleitet von der Standard-Textbox), die direkt die Messages von Windows zu den Tastendrücken der Buchstaben ignoriert (oder eine Ausnahme wirft).
 
Hi,

zu 1. Alternative: ich würde es über If IsNumeric machen.
 
Zuletzt bearbeitet:
Und dann? Dann muss der Text wenn er keine Zahl ist wieder beschnitten werden, denke nicht, dass das sinnvoll ist.
 
ich würd ja in Verbindung mit dem "Validating"-Ereignis der TextBox überprüfen ob die Eingabe korrekt ist und wenn nicht einfach e.Cancel = true machen, da der Benutzer damit nicht die möglichkeit hat die TextBox zu verlassen so lange die Eingabe falsch ist
 
Zuletzt bearbeitet:
danke für eure Vorschlage.

Ich hab jetzt ein NumericUpDown-Teil benutzt. Da kann er Benutzer nur Zahlen eintragen.
Falls jemand anderes sowas auch noch sucht, kann man das auch mit MasketTextBox ähnlich sachen machen. Da gefiel mir aber nicht, dass da im Textfeld so Linen drin sind, bevor etwas eingetragen wird.
Ansonsten war der Vorschlag mit den RegularExpressions nicht schlecht. Meine Lösung aber mir lieber.

Das mit dem Sortieren hab ich so gelöst. Die DataTable wird mit Daten gefüllt. Diese Daten hängen von Werten in einem Array ab, was ich vorher schon hab. Daher hab ich dieses Array vorher sortiert und dann die Tabelle erst erstellt. Somit war die Tabelle auch sortiert. Leider kann man Tabellen nicht so einfach sortieren wie Arrays. Versteh auch nicht wieso.
 
Die Frage ist, wann überprüft werden soll. Soll das passieren, wenn der Benutzer die Textbox verlässt oder schon beim ersten Zeichen. Je nachdem muss man das richtige Ereignis wählen. Beim Überprüfen während der Eingabe eben das Textbox1.TextChanged Event. Dort filtert man alle nicht numerische Zeichen raus. Entweder altmodisch zu Fuß oder elegant mit LINQ, aber dann ist es nur unter .NET Framework 3.5 lauffähig:

Private Sub TextBox1_TextChanged(ByVal sender As TextBox, ByVal e As EventArgs) Handles TextBox1.TextChanged
sender.Text = New String(From Character As Char In sender.Text.ToCharArray _
Where IsNumeric(Character) _
Select Character).ToArray

sender.SelectionStart = sender.Text.Length
End Sub

1.) Nur die numerischen Zeichen aus Digits holen
2.) Den Cursor wieder an den Schluss setzen
 
Zurück
Oben