2013-01-04 10 views
9

Textbox o richtextbox, l'unica cosa che voglio è l'attivazione di una funzione quando si sposta la barra di scorrimento.Catch TextBox Scroll Event?

Ho già trovato GetScrollPos e SetScrollPos. Ho pensato di controllare periodicamente la posizione della barra di scorrimento, ma ci deve essere un modo migliore. Quindi, qual è il modo migliore?

Aggiornamento: utilizzando WinForms

+0

Si sta utilizzando Windows Form o WPF –

+0

possibile duplicato di [Come posso scrivere un evento che accade quando il mouse scorre in TextBox?] (Http://stackoverflow.com/questions/2667175 4/how-can-i-write-an-event-that-happens-when-mouse-scrolls-in-textbox) – drzaus

risposta

7

Supponendo WinForms, si può provare 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

Grazie. L'aggiunta di WM_MOUSEWHEEL lo rende ancora migliore. –

+0

@m_poorUser Sono contento che l'abbia aiutato. Aggiornato la risposta per completezza. – LarsTech

+0

continua a non funzionare se lo scorrimento cambia perché premere il tasto su o giù. – qakmak

0

Ancora meglio - il nascosto MouseWheel evento: https://stackoverflow.com/a/26672097/1037948

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

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

Ci sono altre possibilità di scorrere in un TextBox rispetto all'utilizzo della rotellina del mouse. Basti pensare alla selezione del testo dalla casella corrente. Questo scorrerà entrambi. O usando la barra di scorrimento. –

+0

@PaulKertscher duh; Devo aver postato qui pensando che questo chiedesse la stessa cosa del thread collegato. Indico il tempo di presentazione e chiedo "Era dopo una lunga giornata di gobba!" – drzaus