2009-05-25 6 views
2

Ich habe ein mehrzeiliges Textfeld, und ich möchte die aktuelle Zeilennummer und Spaltennummer des Benutzers in einem Etikett unter dem Textfeld anzeigen. Es sieht so aus, als ob ich die Zeilennummer und Spaltennummer mit der SelectionStart-Eigenschaft, der GetLineFromCharIndex-Methode und der GetFirstCharIndexOfCurrentLine-Methode abrufen kann. Ich kann jedoch kein Ereignis sehen, das jedes Mal ausgelöst wird, wenn sich die Auswahl im Textfeld ändert.Wie kann ich die WinForms TextBox.SelectionStart-Eigenschaft für Änderungen überwachen?

Das Beste, was ich sehen kann, ist, die KeyPress und MouseDown Ereignisse zu überwachen und die SelectionStart Eigenschaft nach jedem Ereignis zu überprüfen. Ich nehme an, ich könnte einen Timer benutzen, um nach Änderungen zu sehen, aber das fühlt sich komisch an.

Habe ich etwas verpasst?

Antwort

3

Um robust zu sein, müssen Sie wahrscheinlich einen Timer hinzufügen, und überprüfen Sie es regelmäßig; from here, postet das Steuerelement keine geeigneten Win32-Nachrichten (EN_SELCHANGE), um dies als Ereignis auszuführen.

0

Um SelectionChanged-Ereignisse zu erhalten, können Sie auch Ihre TextBox in eine RichTextBox konvertieren. RichTextBoxes verhalten sich etwas anders als TextBoxen, daher ist dies vielleicht keine ideale Lösung, aber zumindest gibt es eine SelectionChanged event.

+0

Danke für den Vorschlag, aber ich möchte vor allem die Einfachheit einer Textbox. Ich bin bereit, die Unangemessenheit zu nehmen, mit einem Timer im Austausch zu sehen. –

Verwandte Themen