Benutzer mit den meisten Antworten
Scroll Leisten von TextBox Elementen synchronisieren

Frage
-
Hallo, in einer WFA möchte ich Text in 2 verschiedenen TextBox (en) (Multiline) anzeigen.
Da der Text sehr lang ist und ein Vergleich zwischen den Text in Textbox1 und Textbox2 ermöglicht werden soll, benötige ich vertikale Scrollbars, die in beiden Textboxen synchron laufen sollen, oder aber eine Scrollbar, die gleichzeitig beide Textbox (en) scrollt.
(1.) Meine Erste Idee: Verwendung der Textbox Eigenschaft „Scrollbars -> Vertical“ (this .textBox1.ScrollBars = System.Windows.Forms.ScrollBars .Vertical;)
Hat folgenden Nachteil: Ich kenne keine Möglichkeit auf den Wert dieser Scrollbar zuzugreifen und ihn der Scrollbar für Textbox2 zu übergeben.
(2.) Die zweite Idee das Scrollbar Element in der ToolBox zu nehmen (Zugriff auf Value ist so einfach möglich) bringt folgenses Problem mit:
Wie weise ich den TextBox (en) den Scrollwert zu. Es gibt leider nur ein Beispiel wo das Vorgehen mit einem Panel und der Picturebox realisiert ist.
Sieht hier jemand Möglichkeiten das Problem (elegant) zu lösen…
Ich bin Anfänger in C# und deshalb noch längst nicht mit allen Details der Sprache vertraut
Danke für eure Hilfe
- Verschoben Robert BreitenhoferModerator Mittwoch, 22. Juli 2009 09:26 C# (Von:Visual C++)
Antworten
-
Hallo Peter_01,
In dem folgenden Beispiel findest Du alles was Du brauchst um das vertikale Scrolling zweier TreeViews zu synchronisieren.Artikel zeigt auch wie man einer TreeView ein Scroll-Ereignis anbindet.
Es kann sehr Einfach für TextBoxen umgewandelt werden.
http://www.codegod.de/WebAppCodeGod/treeview-scrolling-synchronisieren-AID241.aspx
Grüße und Erfolg,Robert
- Als Antwort markiert Peter_01 Donnerstag, 23. Juli 2009 08:13
Alle Antworten
-
Hallo Peter,
wenn Du zwei Textboxen synchronisieren willst, so ist die Scrollbar vermutlich der falsche Ansatz,
denn deren Position ergibt sich indirekt aus der Position des Textes, der angezeigt wird und wie
dieser durch Zeilenumbrüche formatiert wird.
Je nachdem wie sehr sich die Inhalte unterscheiden, wird sich die Scrollbar Position nicht synchron sein.
Vermutlich eher kommst Du zum Ziel wenn Du die Zeile anhand TextBoxBase. GetLineFromCharIndex
bestimmst - und TextboxBase hat da einige weitere Hilfsmethoden.
Und das Ergebnis an Select übergibst
Am Rande:
Willst Du es via Scrollbar machen, wirst Du auf das Windows API zurückgreifen müssen.
Bei Codeproject gibt es ein Beispiel allerdings in VB.NET und für eine RichEditControl
http://www.codeproject.com/KB/vb/VbNetScrolling.aspx
Gruß Elmar
-
Hallo Peter_01,
In dem folgenden Beispiel findest Du alles was Du brauchst um das vertikale Scrolling zweier TreeViews zu synchronisieren.Artikel zeigt auch wie man einer TreeView ein Scroll-Ereignis anbindet.
Es kann sehr Einfach für TextBoxen umgewandelt werden.
http://www.codegod.de/WebAppCodeGod/treeview-scrolling-synchronisieren-AID241.aspx
Grüße und Erfolg,Robert
- Als Antwort markiert Peter_01 Donnerstag, 23. Juli 2009 08:13
-
Danke für die schnelle Hilfe,
Das gezeige Beispiel ist sehr gut;
Codegod ist nun bei meinen Favoriten - entscheidend ist oft wo man suchen muss...
ich konnte es auch in mein Projekt einbauen und erreicht, dass die Textbox auf das event "Scroll" reagiert und die Methode "ScrollToPosition()" bekommt.
Mir ist nur aufgefallen, dass der Code deutlich anders organisiert ist als bei einen ganz neuen Projekt. Ich werde noch ein bischen Übung brauchen um da voll durchzusteigen.
Nochmals Danke
Peter