max77
Hallo zusammen.
Ich habe ein kleines Problem mit einer TextBox.
Ich möchte beim Drücken einer bestimmten Taste (z.B. Space) durch ein anderes Zeichen (bspw "_") ersetzten.
Jetzt ist es ziemlich einfach, eine gedrückte Taste zu utnerdrücken, aber:
Wie kann ich in einer TextBox an der aktuellen Stelle ein Zeichen einfügen?
| code: |
1:
|
TextBox.AppendText ("Hallo Welt!") |
|
hängt diesen einfach am Ende an.
Schon mal danke.
Gruß
max
daHooligan
hmmmm... bin jetzt zwar net DER ausgesprochen VB-Programmierer, musste das aber mal in der Schule ien bissel machen.... am ehesten würde ich was in der Richtung
| code: |
1:
2:
3:
4:
5:
|
if TextBox.AppendText ("Hallo Welt!")=TRUE /sofern es einen Rückgabewert gibt....
then
Textbox = Textbox + "_"
|
|
wenn TextBox.AppendText ("Hallo Welt!") keinen Rückgabewert gibt, hab ich allerdings keine ahnung....
du könntest es höchstens so machen, dass du direkt den tastaturspeicher ausliest und die ausgabe auf den bildschirm unterdrückst, ich habe aber keine Ahnung, ob das bei VB geht... bei Turbopascla gings auf jeden Fall
max77
Hi daHooligan!
Erst mal vielen Dank.
Das mit der Tastaturausgabe gibt es bei VB auch.
In VB6 konnteman auch einfach den ASCII-Code der gedrückten Taste ändern, und somit ein anderes Zeichen ausgeben. Leider ist diese Eigenschaft in VB.NET aber schreibgeschützt.
Meine Idee war daher, die Ausgabe zu unterdrücken und an der aktuellen Cusorposition ein anderes Zeichen auszugeben.
daHooligan
hmmmm...
was meinst du mit "schreibgeschützt"??
max77
In früheren Versionen konnte man das Problem etwa so lösen (ist jetzt aus dem VB.NET-Code)
Dabei würden Leerzeichen (ASCII 32) durch ein ¶ (ASCII 182) ersetzt, bevor es in der Textbox erscheint.
| code: |
1:
2:
3:
4:
5:
6:
7:
|
Private Sub Tastendruck(sender As System.Object, e As System.Windows.Forms.KeyPressEventArgs)
If asc(e.KeyChar) = 32 Then
then e.keychar = chr(182)
End If
End Sub
|
|
Schreibgeschützt bedeutet in diesem Fall, dass ich den Wert von e.KeyChar nicht verändern kann und somit nicht ein andere Zeichen ausgeben kann.
max77
Habe die Lösung gefunden:
| code: |
1:
2:
3:
|
TextBox.SelectedText = "einzufügender Text!"
|
|
Damit wird der gerade markierte Text ersetzt, bzw. wenn kein Text markiert ist der Text eingefügt ;-)
YinQ
Ich weiß,ich weiß du hast schon deine lösung, aber das von vorhin mit ascii wert ändern klappt auch ganz einfach.
Deine vb6 variante:
| code: |
1:
2:
3:
4:
5:
|
Private Sub Tastendruck(sender As System.Object, e As System.Windows.Forms.KeyPressEventArgs)
If asc(e.KeyChar) = 32 Then
then e.keychar = chr(182)
End If
End Sub |
|
VB.net:
| code: |
1:
2:
3:
4:
5:
6:
7:
|
dim anhängsel as string
Private Sub Tastendruck(sender As System.Object, e As System.Windows.Forms.KeyPressEventArgs)
If asc(e.KeyChar) = 32 Then
then anhängsel = chr(182)
End If
Textbox = Textbox + anhängsel
End Sub |
|
Falls du das gemeint hast
max77
THX, aber Deine Variante in der VB.NET-Version bringt nicht ganz den gewünschten Erfolg.
Der Text wird so nämlich immer am Ende angehängt, wenn Du aber (und das kommt in dem Fall vor) in der Mitte am tippen bist kommen die "Anhängsel" trotzdem ans Ende.