Скрыть полосы прокрутки RichTextBox - PullRequest
0 голосов
/ 25 октября 2009

Я пытаюсь написать простой текстовый редактор, такой как DarkRoom, в котором есть только RichTextBox (или, альтернативно, TextBox). Моя проблема в том, что я не могу использовать колесо мыши для прокрутки, если у меня нет вертикальной полосы прокрутки. Есть ли способ скрыть эту полосу прокрутки и при этом иметь возможность прокручивать колесико мыши?

Пока у меня есть несколько идей, как это можно сделать, но не знаю, как их реализовать.

  • пересоздать код прокрутки, используя событие MouseWheel
  • изменить визуальный стиль полосы прокрутки, чтобы скрыть ее или сделать ее менее видимой
  • написать свой собственный виджет TextBox
  • перекрывают полосы прокрутки чем-то другим, чтобы скрыть их

P.S .: Использование любых вещей win32 не вариант.

1 Ответ

2 голосов
/ 25 октября 2009

Да, вам придется захватывать события .MouseWheel и .MouseMove. Смотрите этот пост .

Хорошо, сделайте что-то вроде следующего:

  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:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...