Automatisches Scrollen der Textbox verhindern

09/10/2008 - 16:38 von Matthias K. | Report spam
Hallo zusammen,

ich habe eine Applikation geschrieben, in der sekündliche Pakete verschickt
werden und diese werden zur Visualisierung in einer Multiline, Read-Only
Textbox ausgegeben.
Genauer geschieht dies aktuell über die AppendText-Methode, sodass der Fokus
nach jedem Aufruf der Methode am Ende des gesamten Textes ist.
Dieses Verhalten würde ich gerne verhindern, wenn durch den Benutzer der
Fokus von Hand an einer Stelle ungleich des Endes der Textbox gesetzt wurde,
er also nach oben gescrollt hat, um die alten Pakete genauer zu betrachten.
Wünschenswert wàre es, wenn das übliche AppendText-Verhalten, also das
fokussieren, auf das Textende, nur dann eintritt, wenn die Scrollbar sich
auch ganz unten befindet. Ist die Position der Scollbar frei gewàhlt, soll
der Text zwar weiter hinten angefügt, das automatische Scrollen aber
deaktiviert werden.

Ich habe hierzu nun bereits mehrere Foren durchsucht, ohne jedoch eine
passende bzw. funktionierende Lösung gefunden zu haben.
Hat jemand vielleicht eine Idee, wie dies zu bewerkstelligen ist?

Vielen Dank bereits im Voraus für eure Hilfe,
Matthias
 

Lesen sie die antworten

#1 Frank Dzaebel
09/10/2008 - 17:31 | Warnen spam
Hallo Matthias,

Genauer geschieht dies aktuell über die AppendText-Methode, sodass der Fokus
nach jedem Aufruf der Methode am Ende des gesamten Textes ist.
Dieses Verhalten würde ich gerne verhindern, wenn durch den Benutzer der
Fokus von Hand an einer Stelle ungleich des Endes der Textbox gesetzt wurde,
er also nach oben gescrollt hat, um die alten Pakete genauer zu betrachten.



Zum Beispiel:

void MyAppendText(string text)
{
if (textBox1.SelectionStart == textBox1.Text.Length)
textBox1.AppendText(text);
else textBox1.Text += text;
}


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen