vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevAniGif - als kostenlose Vollversion auf unserer vb@rchiv CD Vol.5  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

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

VB.NET - Ein- und Umsteiger
Selbe Validierung mehrer Controls 
Autor: shivan
Datum: 27.08.10 16:53

Hallo zusammen

Ich habe ein Formular, mit mehreren Textboxen, welche ich validieren möchte. Allerdings möchte ich dies nicht 10 mal einzeln schreiben, sondern lieber mit Hilfe einer Schleife arbeiten.

Gibts da eine Möglichkeit?

Also in etwa so:

For Each System.Windows.Forms.TextBox 
            If Not IsNumeric(TextBox1.Text) Then
                MessageBox.Show("Ungültiger Wert")
            End If
        Next
Wäre so etwas machbar?

Freundliche Grüsse

Shivan
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Selbe Validierung mehrer Controls 
Autor: ModeratorDaveS (Moderator)
Datum: 27.08.10 17:00

Es wäre wirklich sinnvoll zu lesen was Windows Forms alles schon anzubieten hat bevor du anfängst das Rad wieder zu erfinden. Hier zB. http://msdn.microsoft.com/de-de/library/ms229603.aspx. Eventuell kann man die englische Version besser verstehen.

________
Alle Angaben ohne Gewähr. Keine Haftung für Vorschläge, Tipps oder sonstige Hilfe, falls es schiefgeht, nur Zeit verschwendet oder man sonst nicht zufrieden ist

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Selbe Validierung mehrer Controls 
Autor: Schü
Datum: 27.08.10 19:20

Es ginge auch über eine Extension. Z.B. für nur numerische Eingaben so :

Imports System.Runtime.CompilerServices
<Extension()> _
    Public Sub OnlyNumeric(ByVal T As TextBox, ByVal allow As Boolean)
        If T IsNot Nothing Then
            If allow Then
                AddHandler T.KeyDown, AddressOf m_DoubleKeyDown
            Else
                RemoveHandler T.KeyDown, AddressOf m_DoubleKeyDown
            End If
        End If
    End Sub
 
Private Sub m_DoubleKeyDown(ByVal sender As Object, ByVal e As _
  System.Windows.Forms.KeyEventArgs)
        'Navigation immer durchlassen...
        If IsNaviKeyCode(e.KeyCode) OrElse IsNumericKeyCode(e.KeyCode) Then _
          Exit Sub
 
        Beep()
        e.SuppressKeyPress = True
        e.Handled = True
    End Sub
 
Friend Function IsNaviKeyCode(ByVal KeyCode As System.Windows.Forms.Keys) As _
  Boolean
        Select Case KeyCode
            Case Keys.Back, Keys.Delete, Keys.Escape, Keys.Enter, Keys.Return
                Return True
            Case Keys.Up, Keys.Down, Keys.Left, Keys.Right, Keys.Home, Keys.End
                Return True
            Case Else
                Return False
        End Select
    End Function
 
    Friend Function IsNumericKeyCode(ByVal KeyCode As _
      System.Windows.Forms.Keys) As Boolean
        Select Case KeyCode
            Case Keys.D0 To Keys.D9
                Return True
            Case Keys.NumPad0 To Keys.NumPad9
                Return True
            Case Else
                Return False
        End Select
    End Function
Das sieht dann so aus:
Du kannst z.B. im Load-Ereignis der Form scheiben:
 Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) _
   Handles Me.Load
        TextBox1.OnlyNumeric(True)
    End Sub
Damit hast Du das Verhalten aktiviert.
mittels ähnlicher Extensions kannst Du auch andere Eingaben erzeugen.


Schü
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Selbe Validierung mehrer Controls 
Autor: shivan
Datum: 06.09.10 10:12

@ DaveS, danke werde mich gleich mal schlau machen.

@ Schü, danke für den Code. Ich gucks mir mal an, obwohls ziemlich aufwändig ist.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Selbe Validierung mehrer Controls 
Autor: Superpeppi
Datum: 06.09.10 11:04

Wie wäre es hiermit, es werden drei Textboxen überprüft.

    Private Sub TextBox_Validating(ByVal sender As Object, ByVal e As _
      System.ComponentModel.CancelEventArgs) Handles TextBox1.Validating, _
      TextBox2.Validating, TextBox3.Validating
 
        Dim tb As TextBox = TryCast(sender, TextBox)
        If Not IsNumeric(tb.Text) Then
            MessageBox.Show("Ungültiger Wert")
        End If
 
    End Sub
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Selbe Validierung mehrer Controls 
Autor: shivan
Datum: 06.09.10 11:51

Sieht ziemlich viel einfach aus! Danke vielmals.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Selbe Validierung mehrer Controls 
Autor: nesh
Datum: 06.09.10 15:51

Viele Wege führen nach Rom.

Ich hatte mal eine Maske mit 50 Textboxen bei welchen zur Laufzeit die Hintergrundfarben geändert werden sollten.

Dim t() As TextBox = {txt_A, txt_B,txt_C}
 
        For Each box As TextBox In t
 
            box.BackColor = Color.Blue
 
            'Oder bei dir:
            If Not IsNumeric(box.Text) Then
 
                MsgBox("Dem geht nett")
 
            End If
 
        Next


________________________________________________________________

Du kannst mit deinem Computer ALLES machen was Du willst!
Allerdings musst Du erst herausfinden wie.....
________________________________________________________________

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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-2024 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