2013-01-04 5 views
9

Textfeld oder richtextbox, nur was ich will, löst eine Funktion aus, wenn Scrollleiste bewegt.Catch Textbox Scroll Event?

Ich habe bereits GetScrollPos und SetScrollPos gefunden. Ich dachte daran, die Scrollbar-Position regelmäßig zu überprüfen, aber es muss einen besseren Weg geben. Also, was ist der bessere Weg?

Update: Mit WinForms

+0

Verwenden Sie Windows Form oder WPF –

+0

mögliches Duplikat von [Wie schreibe ich ein Ereignis, das passiert, wenn die Maus in TextBox blättert?] (Http://stackoverflow.com/questions/2667175 4/how-can-ich-schreibe-ein-Ereignis-das-passiert-wenn-Maus-scrollt-in-Textbox) – drzaus

Antwort

7

WinForms Unter der Annahme, können Sie versuchen pinvoking:

public class MyRTF: RichTextBox { 

    private const int WM_HSCROLL = 0x114; 
    private const int WM_VSCROLL = 0x115; 
    private const int WM_MOUSEWHEEL = 0x20A; 

    protected override void WndProc(ref Message m) { 
    base.WndProc(ref m); 

    if (m.Msg == WM_VSCROLL || m.Msg == WM_HSCROLL || m.Msg == WM_MOUSEWHEEL) { 
     // scrolling... 
    } 
    } 

} 
+0

Danke. Hinzufügen von WM_MOUSEWHEEL macht es noch besser. –

+0

@m_poorUser Schön, dass es geholfen hat. Die Antwort wurde der Vollständigkeit halber aktualisiert. – LarsTech

+0

funktioniert immer noch nicht, wenn der Bildlauf geändert wird, da die Taste nach oben oder unten gedrückt wird. – qakmak

0

Noch besser - die versteckte MouseWheel Veranstaltung: https://stackoverflow.com/a/26672097/1037948

public Form1() 
{ 
    InitializeComponent(); 
    textBox1.MouseWheel += textBox1_MouseWheel; 
} 

void textBox1_MouseWheel(object sender, MouseEventArgs e) 
{ 
    throw new NotImplementedException(); 
} 
+0

Es gibt andere Möglichkeiten, in einer TextBox zu scrollen als mit dem Mausrad. Denken Sie nur daran, Text aus der aktuellen Box auszuwählen. Dies wird entweder rollen. Oder mit der Bildlaufleiste. –

+0

@PaulKertscher duh; Ich muss hier gepostet haben, weil ich dachte, dass dies dasselbe wie der verknüpfte Thread ist. Ich weise auf die Einreichungszeit hin und behaupte "Es war nach einem langen Buckeltag!" – drzaus