Ich habe eine Winforms App, die eine RichTextBox enthält.Winforms RichTextBox: Wie kann ich feststellen, wie viele Textzeilen sichtbar sind?
Wie kann ich feststellen, wie viele Textzeilen angezeigt werden, derzeit sichtbar?
Grund: Ich möchte den Caret in die Mitte der RichTextBox scrollen. Ich kann RichTextBox.ScrollToCaret() verwenden, aber das setzt das Caret an der Spitze der RichTextBox. Ich denke, wenn ich weiß, wie viele Zeilen angezeigt werden, könnte ich das Caret "n"/2 Zeilen "zurück" bewegen, dann ScrollToCaret() aufrufen und dann die ursprüngliche Caret-Position wiederherstellen.
EDIT:
I EM_GETLINECOUNT gefunden, was ich dachte, war die Antwort, mit Ausnahme der doc sagt: Die EM_GETLINECOUNT Nachricht die Gesamtzahl der Textzeilen abruft, nicht nur die Anzahl der Zeilen, die derzeit sichtbar sind .
Verlockend gibt es auch EM_GETFIRSTVISIBLELINE, die die erste sichtbare Zeile erhält, aber ich konnte nicht finden, eine GETLASTVISIBLELINE. ??
Verwandte:
How can I scroll the caret to the middle of the RichTextBox?
Nur interessiert - was werden Sie mit dieser Information tun? Sie erkennen, dass dies variabel sein kann, da Sie im gesamten Text unterschiedliche Schriftarten und Abstände haben können. –
Es wurde in eine benutzerdefinierte RTB erstellt, die Zeilennummern anzeigt: http://stackoverflow.com/questions/2567263/how-to-show-number-of-a-line-in-a-richtbox-c/2668264#2668264 – Cheeso