2013-01-04 2 views
9

텍스트 상자 또는 richtextbox, 내가 원하는 것은 스크롤바가 움직일 때 함수를 트리거하는 것입니다.텍스트 상자 스크롤 이벤트를 잡으시겠습니까?

이미 GetScrollPos 및 SetScrollPos를 발견했습니다. 나는 스크롤바 위치를 주기적으로 점검하는 것을 생각했지만 더 좋은 방법이 있어야한다. 그래서, 더 좋은 방법은 무엇입니까?

업데이트 : 사용 윈폼 윈폼 가정

+0

것은 당신이 윈도우 폼이나 WPF를 사용하고 있습니까를 –

+0

가능한 복제본 [마우스가 TextBox에 스크롤 될 때 발생하는 이벤트를 작성하려면 어떻게합니까?] (http://stackoverflow.com/questions/2667175) 4-how-can-i-write-an-event-that-happens-when-mouse-scroll-in-textbox) – drzaus

답변

7

, 당신은 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

감사합니다. WM_MOUSEWHEEL을 추가하면 더 좋습니다. –

+0

@m_poorUser 도움이 되니 기쁩니다. 완성을위한 답변을 업데이트했습니다. – LarsTech

+0

스크롤이 변경되면 여전히 키가 작동하지 않으므로 키가 작동하지 않습니다. – qakmak

0

더 나은 - 숨겨진 MouseWheel 이벤트 : https://stackoverflow.com/a/26672097/1037948

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

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

마우스 휠을 사용하는 것보다 TextBox에서 스크롤 할 수있는 다른 방법이 있습니다. 현재 상자에서 텍스트를 선택하는 것으로 생각하십시오. 이것도 스크롤됩니다. 또는 스크롤바를 사용하십시오. –

+0

@PaulKertscher duh; 나는 이것이 링크 된 스레드와 같은 것을 묻고 있다고 여기에 게시 했음에 틀림 없다. 나는 제출 시간과 주장을 지적했다. "그것은 긴 고난 당일 이후였다!" – drzaus

관련 문제