2009-10-24 10 views
0

RichTextBox (또는 TextBox)가있는 DarkRoom과 같은 간단한 텍스트 편집기를 작성하려고합니다. 내 문제는 내가 수직 스크롤바가 없다면 나는 스크롤을 위해 마우스 휠을 사용할 수 없다는 것이다. 이 스크롤 막대를 숨기고 마우스 휠로 스크롤 할 수있는 방법이 있습니까?RichTextBox의 스크롤 막대 숨기기

지금까지 나는 이것을 어떻게 할 수 있었는지 몇 가지 아이디어를 가지고 있지만 구현 방법에 대해서는 전혀 모른다.

  • 을 숨기거나
  • 가 뭔가 스크롤 overlap은 내 자신의 텍스트 상자 위젯
  • 을 보이지 쓰기 만들기 위해 마우스 휠 이벤트
  • 변화를 스크롤의 시각적 스타일을 사용하여 스크롤 코드를 다시 작성 그 (것)들을 숨기기 위하여 다른 사람

추 신 : 어떤 win32 재료든지 사용하는 것은 선택권이 아닙니다.

답변

2

예. .MouseWheel 및 .MouseMove 이벤트를 캡처해야합니다. this post을 참조하십시오.

좋아, 다음과 같이 뭔가를 할 :

  1. 폼로드 이벤트에서 선을 추가합니다.

    private void Form1_Load(object sender, EventArgs e) 
    { 
        this.richTextBox1.MouseWheel += new MouseEventHandler(richTextBox1_MouseWheel); 
    } 
    
  2. 마우스 휠 이벤트에서 다음을 추가하십시오.

    void richTextBox1_MouseWheel(object sender, MouseEventArgs e) 
    { 
        if (e.Delta > 0) 
        { 
         //Handle mouse move upwards 
         if (richTextBox1.SelectionStart > 10) 
         { 
          richTextBox1.SelectionStart -= 10; 
          richTextBox1.ScrollToCaret(); 
         } 
        } 
        else 
        { 
         //Mouse move downwards. 
         richTextBox1.SelectionStart += 10; 
         richTextBox1.ScrollToCaret(); 
        } 
    } 
    

동일한의 실행 샘플을 싶은 경우 나, 어느 경우에 알려 주시기 바랍니다; 또는 당신이 솔루션을 좋아하지 않는 경우 (0 :

+0

) 스크롤 부분을 수행하는 방법을 설명하지 않습니다. 그게 바로 지금 붙어 있 었는가. –

+0

편집 내용에 대한 내 답변을 참조하십시오. 코드 추가 –

+0

정확하지 않습니다. 스크롤하는 동안 캐럿 위치가 변경되어서는 안되지만, SelectionStart를 원래 값으로 되돌려도 올바르게 작동하지는 않습니다. 어떤 문자 위치에 있는지 알고 있으면 작동 할 수 있습니다. 상단의 보이는 선이 시작되거나 하단의 선이 나타납니다. 그러나 SelectionStart 값을 상수로 증가/감소 시키면 작동하지 않습니다. 이것을 테스트하는 동안 ScrollToCaret이 몇 픽셀을 위아래로 스크롤합니다. 캐럿은 이미 표시되어 있습니다. –