2013-01-04 21 views
9

Metin kutusu veya richtextbox, tek istediğim şey kaydırma çubuğu hareket ettiğinde bir işlevi tetiklemektir.Metin Kutusu Kaydırma Etkinliğini Yakala?

Zaten GetScrollPos ve SetScrollPos'u buldum. Periyodik olarak kaydırma çubuğunu kontrol etmeyi düşündüm ama daha iyi bir yol olmalı. Peki, daha iyi bir yol nedir?

Güncelleme: kullanma WinForms varsayarsak

+0

Windows Formu veya WPF kullanıyorsunuz –

+0

olası bir kopyası [Fare TextBox'ta Scroll'unda Ne Olacak Bir Olay Yazabilirim?] (Http://stackoverflow.com/questions/2667175 4/nasıl-can-i-write-an-olayı-bu-fare---metin-----metin-kaydırma-in-box) – drzaus

cevap

7

, sen PInvoking deneyin edebilirsiniz:

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

Teşekkürler. WM_MOUSEWHEEL ekleyerek daha da iyi hale getirir. –

+0

@m_poorUser Yardım ettiğine sevindim. Tamlık için cevabı güncellendi. Kaydırma değiştiğinde – LarsTech

+0

hala çalışmıyor, çünkü tuşa yukarı veya aşağı basın. – qakmak

0

Daha da iyisi - gizli MouseWheel olay: https://stackoverflow.com/a/26672097/1037948

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

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

Bir TextBox'ta fare tekerleğini kullanmaktan başka kaydırma yapmak için başka olasılıklar da vardır. Sadece mevcut kutudan metin seçmeyi düşünün. Bu da ya kaydırır. Ya da kaydırma çubuğunu kullanarak. –

+0

@PaulKertscher duh; Bağlantılı iş parçacığıyla aynı şeyi sorduğunu düşünerek buraya göndermiş olmalıyım. Gönderim zamanını ve "Uzun bir gecekondu gününün peşindeydi" iddiasını belirtiyorum. – drzaus