Die Community zu .NET und Classic VB.
Menü

VB 5/6-Tipp 0397: Mehrzeiliges Paßwort-Feld ermöglichen

 von 

Beschreibung 

Hier wird eine mehrzeilige Paßwort-Eingabe ermöglicht. Das PassWodChar an sich, ist nicht auf das bekannte * beschränkt, sondern kann optional auf jedes andere eingestellt werden.

Schwierigkeitsgrad:

Schwierigkeitsgrad 1

Verwendete API-Aufrufe:

keine

Download:

Download des Beispielprojektes [2,45 KB]

'Dieser Quellcode stammt von http://www.activevb.de
'und kann frei verwendet werden. Für eventuelle Schäden
'wird nicht gehaftet.

'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum.
'Ansonsten viel Spaß und Erfolg mit diesem Source!

'------------- Anfang Projektdatei Project1.vbp -------------
'--------- Anfang Formular "Form1" alias Form1.frm  ---------
' Steuerelement: Schaltfläche "Command1"
' Steuerelement: Textfeld "Text1"
' Steuerelement: Beschriftungsfeld "Label1"


'die PasswordChar-Eigenschaft eines Text-Controls funktioniert
'nur, wenn die MultiLine-Eigenschaft auf False gesetzt ist.
'Hat man nun ein Mehrzeiliges Eingabefeld, das man verbergen
'möchte, hilft folgender Code weiter:

'Autor: Marcus Woida
'E-Mail: m.Woida@t-online.de

Option Explicit
Public strEingabe As String

Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
    'Pfeiltasten (links, rechts,oben, unten)
    '<Einfg>, <Entf>, <Pos1> und <Ende> deaktivieren
    
    Select Case KeyCode
        Case 37 To 40, 45, 6, 36, 35: KeyCode = 0
        Case Else
    End Select
End Sub

Private Sub Text1_KeyPress(KeyAscii As Integer)
    If KeyAscii = 8 And Len(strEingabe) > 0 Then
        'wenn Backspace-Taste
        strEingabe = Left$(strEingabe, Len(strEingabe) - 1)
    Else
        'sonst String aktualisieren und Anzeige verbergen
        strEingabe = strEingabe & Chr$(KeyAscii)
    
        'Statt des Sterns (KeyAscii=42) kann man auch beliebige
        'Zeichen anzeigen lassen: KeyAscii = Int(Rnd * 255) + 1
        KeyAscii = 42
    End If
End Sub

Private Sub Command1_Click()
    MsgBox strEingabe
End Sub
'---------- Ende Formular "Form1" alias Form1.frm  ----------
'-------------- Ende Projektdatei Project1.vbp --------------

Tipp-Kompatibilität:

Windows/VB-VersionWin32sWin95Win98WinMEWinNT4Win2000WinXP
VB4
VB5
VB6

Hat dieser Tipp auf Ihrem Betriebsystem und mit Ihrer VB-Version funktioniert?

Ja, funktioniert!

Nein, funktioniert nicht bei mir!

VB-Version:

Windows-Version:

Ihre Meinung  

Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.

Archivierte Nutzerkommentare 

Klicken Sie diesen Text an, wenn Sie die 3 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.

Kommentar von Micha am 01.06.2005 um 10:32

Wenn das Eingabefeld leer ist und Backspace gedrückt wird macht es einen Stern rein obwohl das nich sein dürfte. Daher folgender Änderungsvorschlag :

anstatt:

Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 8 And Len(strEingabe) > 0 Then
'wenn Backspace-Taste
strEingabe = Left$(strEingabe, Len(strEingabe) - 1)
Else ... ... ...
... ... ...

den Code so verwenden:

Private Sub Text1_KeyPress(KeyAscii As Integer)
'wenn Backspace-Taste
If KeyAscii = 8 Then
'wenn das Textfeld nicht leer
If Len(strPass) > 0 Then
strPass = Left$(strPass, Len(strPass) - 1)
End If
Else ... ... ...
... ... ...


Ciao Micha

Kommentar von Eizvber am 20.08.2004 um 19:03

@Chrisibuu

Normalerweise kann man Passwort-Kästchen nur einzeilig machen.

Kommentar von Chrisibuu am 03.01.2004 um 22:45

Warum so umständlich? Macht doch einfach:

Form_Load()
Text1.Multiline = True
End Sub

Ist doch viel einfacher, oder?