Einfügemarke in Textbox setzen ...

28/02/2010 - 17:03 von Frank Boehland | Report spam
Hallo,

ich habe eine Form, darin ein Benutzersteuerelement mit einer Textbox (und
anderen Elementen). Wenn das Enter-Ereignis der Textbox eintritt, soll diese
"in den Hintergrund" treten und eine (höhenvariable) Textbox der Form die
"Regie" übernehmen. Diese enthàlt den Text u.a. übergebene Eigenschaften.

Mir gelingt es einfach nicht, die Einfügemarke in die höhenvariable Textbox
zu setzen, obwohl Texteingabe u.a. funktioniert. Die Marke geistert nach wie
vor in der Benutzersteuerelement-Textbox umher.

Ich habe mit allem experimentiert: BringToFront, Focus, SelectionStart,
ScrollToCaret. Vielleicht liegt es an der Reihenfolge des Ganzen?

Mein Problem überhaupt:

Die Textbox soll ihre Höhe der Texteingabe anpassen. Dazu nutze ich
"MeasureString". Das Benutzersteuerelement soll hingegen nicht wachsen. Da
die Textbox im Element einliegt, wird die Größenànderung nicht sichtbar. Also
soll dies eine "àußere", in der Form liegende Textbox übernehmen.

Ich hoffe, jemand versteht mich. Im Kern geht es um das Setzen der
Einfügemarke.

Gruß und Dank
Frank
 

Lesen sie die antworten

#1 Karsten Sosna
01/03/2010 - 09:11 | Warnen spam
Ich habe mit allem experimentiert: BringToFront, Focus, SelectionStart,
ScrollToCaret. Vielleicht liegt es an der Reihenfolge des Ganzen?



Hallo Frank,
so ganz verstanden habe ich noch nicht, was Du überhaupt vorhast. :=(
Du hast also eine TextBox für die Eingabe und eine weitere für die Anzeige,
richtig? Befinden sich beide Textboxen innerhalb des Benutzersteuerelement?
Denn eigentlich ist das kein Problem.
Nimm mal eine leeres Formular. darauf platzierst Du dreiTextboxen(TextBox1,
TextBox2 und TextBox3). Nun setzt Du Visible der TextBox2 auf False. Solange
sich keine anderen Steuerelemente vor auf dem Formular befunden haben,
sollte TextBox1 den TabIndex = 0, TextBox2 den TabIndex = 1 und TextBox3 den
TabIndex = 2 erhalten. Startest Du nun die Anwendung und làsst das Formular
anzeigen sollte die Einfügemarke in der TextBox1 blinken. Nun fügst Du
diesen Code hinzu:
\\\
Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
If e.KeyChar = Chr(Keys.Enter) Then
TextBox2.Visible = True
TextBox1.Visible = False
End If
End Sub
///
Wenn sich die Einfügemarke in der TextBox1 befinden und Du die Entertaste
drückst wird die TextBox1 ausgeblendet und TextBox2 angezeigt. Sie erhàlt
automatisch den Focus. Sprich die Einfügemarke blinkt in der TextBox2.
Wichtig dabei ist, dass erst TextBox2 angezeigt wird und danach erst
TextBox1 ausgeblendet wird.

Hoffe das hilft Dir schon mal weiter.
Gruß Scotty

Ähnliche fragen