vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Brandneu! sevEingabe v3.0 - Das Eingabecontrol der Superlative!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Re: Maskierte Textbox 
Autor: Manfred X
Datum: 19.03.10 05:42

Hallo!

Die MaskedTextBox wird von links nach rechts
anhand der durch "Mask" festgelegten gültigen Zeichen gefüllt.

Zunächst muss man Trennzeichen, sowie Zahl und Länge der
Felder definieren und danach die Maske aufbauen - etwa so

   Dim TrennZeichen As String = "/"            'Feld-Trennzeichen
   Dim Fieldcount As Integer = 3               'Zahl der Felder
   Dim Max_FieldLength(Fieldcount) As Integer  'Länge der Felder (Zeichenzahl)
   Max_FieldLength(0) = 2
   Max_FieldLength(1) = 2
   Max_FieldLength(2) = 4
 
   'Aufbau der entsprechenden Maske (hier: für Ziffern)
   MaskedTextBox1.Mask = ""
   For i As Integer = 0 To Fieldcount - 1
      MaskedTextBox1.Mask &= _
      Microsoft.VisualBasic.StrDup(Max_FieldLength(i), "9")
      If i < Fieldcount - 1 Then _
      MaskedTextBox1.Mask &= "\" & TrennZeichen
   Next i
Das Verarbeiten von Zeichenfolgen aus einer Textdatei, die
nicht formatiert durch ein Programm gefüllt worden ist,
bedarf einer genauen Schrittfolge.

Beim Lesen eines String aus der Datei muss die
Zahl der Felder anhand des Trennzeichens ermittelt
und ggf. korrigiert werden.
Ungültige Zeichen aus den Feldern entfernen
(hier: nur Ziffern werden erlaubt)
Danach muss die Zeichenlänge der einzelnen Felder
eingerichtet (hier: rechtsbündig) und der
anzuzeigende String aufgebaut werden
(wg. Demo Schritt für Schritt):

    'Aus der Datei gelesener String (Beispiel)
    Dim dat_str As String = "76/aaa1234/28/33"
 
    'Zerlegung des String in Felder anhand der Trennzeichen
    Dim dat_fields() As String = dat_str.Split(CChar(TrennZeichen))
    If dat_fields.Length <> Fieldcount Then
       'Ungültige Zahl der Felder -> Anhängen oder Abschneiden?
       ReDim Preserve dat_fields(Fieldcount - 1)
    End If
 
    Const Ziffern As String = "0123456789" 'zulässige Zeichen
 
    Dim istr As String
    'Formatierung der Felder auf korrekte Länge
    For i As Integer = 0 To Fieldcount - 1
       'Zeichen, die keine Ziffern sind, ggf. entfernen
       istr = String.Empty
       If Not String.IsNullOrEmpty(dat_fields(i)) Then
          For z As Integer = 0 To dat_fields(i).Length - 1
             If Ziffern.Contains(dat_fields(i)(z)) Then
               istr &= dat_fields(i)(z)
             End If
          Next z
          dat_fields(i) = istr
       Else
           dat_fields(i) = String.Empty
       End If
 
       'zu kurze Strings verlängern
       While dat_fields(i).Length < Max_FieldLength(i)
          dat_fields(i) = " " & dat_fields(i)
       End While
       'zu lange Strings abschneiden
       dat_fields(i) = _
       dat_fields(i).Substring(0, Max_FieldLength(i))
    Next i
 
    'Aufbau des Anzeigestrings
    Dim display_string As String = String.Empty
    For i As Integer = 0 To Fieldcount - 1
       display_string &= dat_fields(i)
    Next i
 
    MaskedTextBox1.Text = display_string
Dieser Code entfernt - ohne Warnung - überzählige Felder
und ungültige/überzählige Zeichen aus dem Dateistring.
(Für "RegExer": Ich weiss, ich weiss ...)
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Maskierte Textbox3.030JimmyJo2218.03.10 15:41
Re: Maskierte Textbox2.101keco18.03.10 15:59
Re: Maskierte Textbox2.008Manfred X18.03.10 16:45
Re: Maskierte Textbox2.042JimmyJo2218.03.10 19:30
Re: Maskierte Textbox1.995Manfred X18.03.10 20:01
Re: Maskierte Textbox2.121JimmyJo2218.03.10 20:38
Re: Maskierte Textbox2.136Manfred X19.03.10 05:42

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel