Zeichen automaitsch generieren

Hallo zusammen

Wenn ich in einer Textbox etwas eingebe, soll es mir nach 3 eingegebenen Zeichen einen „Punkt“ generieren. Wie kann ich dies bewerkstelligen??

Ebenfalls möchte ich, dass nach 15 eingegebenen Zeichen, keine weiteren Eingaben möglich sind.

Vielen Dank für eure Hilfe

MFG

ist noch nicht perfekt, weil der user ans ende der zeile clicken muss um weiter zu schreiben aber mit dem ansatz kommst du hoffentlich weiter

Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
'nach 3 Zeichen einen Punkt einfügen
If TextBox1.Text.Length = 3 Then
TextBox1.Text = TextBox1.Text & „.“
End If
'nach 15 ist Schluss :wink:
If TextBox1.Text.Length > 15 Then
TextBox1.Text = TextBox1.Text.Substring(0, 15)
End If
End Sub

Ja sowas hatte ich auch schon. Trotzdem Danke. Ich suche leider nach einer besseren Variante… Sorry das ich mein Ergebniss nicht schon vorher postete.

Hat jemand vielleich eine Variante in der der User nicht ans Ende klicken muss?

Vielen Dank für eure Hilfe!

Hi,

Hat jemand vielleich eine Variante in der der User nicht ans
Ende klicken muss?

Du hast Dir den Code nicht richtig angesehen, da muss der User die Maus nicht anfassen.

Gruß Rainer

Doch ab dem 3ten Zeichen springt der Cursor an den Anfang der Textbox.

Wie wärs mit der MaskedTextBox?

Grüße, JasonDelife.

Hi,

Doch ab dem 3ten Zeichen springt der Cursor an den Anfang der
Textbox.

ach so. Sorry ich ahbe hier gerade kein .NET installiert, in VB6 sieht’s so aus:

Option Explicit

Private Sub Text1\_Change()
 If Len(Text1.Text) = 3 Then
 Text1.Text = Text1.Text & "."
 Text1.SelStart = 4
 ElseIf Len(Text1.Text) \> 15 Then
 Text1.Text = Left(Text1.Text, 15)
 Text1.SelStart = 15
 End If
End Sub

Das muss in .NET fast genau so aussehen.

Gruß Rainer

Hey Danke super! Das wars

Leider macht er den Punkt nur einmal. Sollte ihn aber 3 mal schreiben…

Vielen Dank für deine Hilfe

Ps. In .NET siehts so aus:

If Len(textbox.Text) = 3 Then
textbox.Text = textbox.Text & „.“
textbox.Select(4, textbox.Text.Length)

Hi,

Hey Danke super! Das wars

Leider macht er den Punkt nur einmal. Sollte ihn aber 3 mal
schreiben…

ach so,so hatte ich das nicht verstanden. :smile:

Option Explicit

Private Sub Text1\_Change()
 If Len(Text1.Text) \>= 15 Then
 Text1.Text = Left(Text1.Text, 15)
 Text1.SelStart = Len(Text1.Text)
 Exit Sub
 ElseIf (Len(Text1.Text) + 1) Mod 4 = 0 Then
 Text1.Text = Text1.Text & "."
 Text1.SelStart = Len(Text1.Text)
 End If
End Sub

Nach .NET umschreiben musst Du wieder selbst, aber das hat ja geklappt.

Gruß Rainer

Perfekt! Vielen Vielen Dank!

Einzig das Text1.Text = Left(Text1.Text, 15) bekomm ich noch nicht ins .NET.(Also das Left(), obwohl auch .NET left kennt) Doch das werd ich schon irgendwie hinkriegen xD

Schönen Abend und nochmals Vielen Dank

Hi,

Einzig das Text1.Text = Left(Text1.Text, 15) bekomm ich noch
nicht ins .NET.(Also das Left(), obwohl auch .NET left kennt)
Doch das werd ich schon irgendwie hinkriegen xD

das können wir ja oben bei TranceEnergy abschreiben. :smile:

TextBox1.Text = TextBox1.Text.Substring(0, 15)

Gruß Rainer

[Tippfehler korrigiert]

Komplett
Hallo,

noch mal den Code komplett, hier habe ich die richtige Entwicklungsumgebung zum Testen. :smile:

Public Class Form1

 Private Sub TextBox1\_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
 If TextBox1.Text.Length \>= 15 Then
 TextBox1.Text = TextBox1.Text.Substring(0, 15)
 TextBox1.SelectionStart = TextBox1.Text.Length
 Exit Sub
 End If
 If (TextBox1.Text.Length + 1) Mod 4 = 0 Then
 TextBox1.Text = TextBox1.Text & "."
 TextBox1.SelectionStart = TextBox1.Text.Length
 End If
 End Sub

End Class

Gruß Rainer