Hallo.
Habe 2 RichTextBoxen in ein Form drin und würde gerne beim Scrollen in der einen TextBox (egal ob mit Maus, per Pfeiltasten oder auf der Scroll Leiste) der gleiche Wert in der anderen Box gescrollt wird.
Jemand einen Tipp, wie und wo ich das umsetzen kann?
Danke!
Hallo Krumnix,
wo sind wir? Forms? WPF?
Gruss
Coffeebean
Microsoft MVP // Me // Blog // GitHub // @Egghead // All my talks // Speakerdeck
Nicht ganz 😃
Es läuft zwar, habe aber das gleiche Problem wie der Kollege am Ende des Threads bei zu viel Text in der richTextBox.
Ich suche dazu noch ne Lösung.
Hallo Krumnix,
ich habe den Thread nur überflogen.
Es läuft zwar, [...] aber
Kannst du dann bitte deine Frage präzisieren? Um was geht es genau? Was genau läuft nicht? Kannst du nicht parallel scrollen? Oder kannst du parallel Scrollen aber bei zuviel Text passiert etwas unerwartetes? Wenn ja: Was passiert?
Gruss
Coffeebean
Microsoft MVP // Me // Blog // GitHub // @Egghead // All my talks // Speakerdeck
Hab den Fehler gefunden. Problem ist, dass npos nur ein "int" ist, welches halt bei großen Texten schnell in den Überlauf geht.
Hab mal testweise npos als int32 deklariert und damit scheint es zu funktionieren.
Selbst meine größte Datei hat keinen Überlauf mehr erzeugt.
Hallo Krumnix,
du hast nicht eine Frage von mir beantwortet 😃 bitte hilf mir ein bisschen den Titel entsprechend deines Problems zu formulieren! Nochmal: War dein Problem in den Textboxen zu scrollen oder gab es ein Problem bei einem zu langem Text? Gab es eine Stackoverflowexception?
Hilfesuchende sehen nur den Titel und entscheiden dann ob der Thread hilfreich ist oder nicht. Deine Problemlösung passt derzeit nicht auf den Titel. Daher: Was war denn dein Problem?
Gruss
Coffeebean
Microsoft MVP // Me // Blog // GitHub // @Egghead // All my talks // Speakerdeck
Hab mal testweise npos als int32 deklariert und damit scheint es zu funktionieren.
Int32
und int
ist der gleiche Datentyp. Daran kann es also nicht gelegen haben. Ganz abgesehen davon: Wenn du mehr als 4 Mrd. Zeichen in deinem Text hast, ist die RichTextBox auch die falsche Herangehensweise.
Weeks of programming can save you hours of planning
Ja, korrekt.
Folgendes Problem war:
Nun können in beiden richTextBoxen gescrollt werden, und die andere scrollt automatisch mit.
Was muss man tun (C# VS2015):
1.
static class Program
{
[System.Runtime.InteropServices.DllImport("User32.dll")]
public extern static int GetScrollPos(IntPtr hWnd, int nBar);
[System.Runtime.InteropServices.DllImport("User32.dll")]
public extern static int SendMessage(IntPtr hWnd, uint msg, IntPtr wParam, IntPtr lParam);
/// <summary>
/// Der Haupteinstiegspunkt für die Anwendung.
/// </summary>
[STAThread]
static void Main()
private void richTextBox1_VScroll(object sender, EventArgs e)
{
if (richTextBox1.Focused == true)
{
Int32 nPos = Program.GetScrollPos(richTextBox1.Handle, 1);
nPos <<= 16;
uint wParam = 4 | (uint)nPos;
Program.SendMessage(richTextBox2.Handle, 0x0115, new IntPtr(wParam), new IntPtr(0));
}
}
private void richTextBox2_VScroll(object sender, EventArgs e)
{
if (richTextBox2.Focused == true)
{
Int32 nPos = Program.GetScrollPos(richTextBox2.Handle, 1);
nPos <<= 16;
uint wParam = 4 | (uint)nPos;
Program.SendMessage(richTextBox1.Handle, 0x0115, new IntPtr(wParam), new IntPtr(0));
}
}
Das Problem mit dem Überlauf besteht weiterhin.
Int32 und int sind, wie schon angemerkt der gleiche Datentyp.
Das Problem lässt sich leider nicht (so einfach) lösen, da die verwendeten Windowsfunktionen nur 32bit Werte als Paramter haben und es keine 64bit Versionen gibt.
using System;class H{static string z(char[]c){string r="";for(int x=0;x<(677%666);x++)r+=c[
x];return r;}static void Main(){int[]c={798,218,229,592,232,274,813,585,229,842,275};char[]
b=new char[11];for(int p=0;p<((59%12));p++)b[p]=(char)(c[p]%121);Console.WriteLine(z(b));}}