2009-05-11 9 views
1

Ich entwickle ein benutzerdefiniertes Steuerelement, das am ehesten einem Textbereich ähnelt. Ich zeichne Text, der richtig funktioniert, und akzeptiere Eingaben, die auch funktionieren. Aber ich (der Benutzer) rate raten, wo der Caret ist, während ich tippe, da ich alles manuell mache. Wie zeichne ich einen blinkenden Caret, um anzuzeigen, wo ich gerade tippe? Gibt es einen Standard Weg dies zu tun?Zeichnen eines blinkenden Caret in Winforms

Antwort

2

Ich denke, dass, ärgerlich, gibt es keine verwaltete API für Carets. Sie müssen daher entweder PInvoice für die Win32-Funktionen für Einfügemarke, oder implementieren Sie diese Funktionalität selbst (d. H. Malen und Verbergen eines blinkenden Einfügemarke, wenn und nur wenn das Steuerelement den Eingabefokus hat).

Siehe zum Beispiel Custom Caret for WinForms TextBox.

+1

Ich hasse wirklich den Rückgriff auf Win32-Funktionen, also denke ich, dass ich fest bin, den Caret manuell zeichnend. Immer noch heimlich gehofft, dass jemand mitkommen wird und sagt: "Oh nein, benutzt nur diese magische Funktion", obwohl ;-) – Ko9

+0

ich wünsche. FWIW Mein Algorithmus, um den Caret zu zeigen, ist ein schmales Rechteck zu zeichnen; und um den Caret zu verbergen, streiche ich das Rechteck mit der Hintergrundfarbe neu und streiche das Wort neu (das Hintergrundrechteck des Wortes und den Vordergrundtext). – ChrisW