隐藏RichTextBox的滚动条

时间:2009-10-24 23:20:53

标签: c# .net winforms user-interface

我正在尝试编写一个像DarkRoom这样的简单文本编辑器,其中只包含一个RichTextBox(或者一个TextBox)。我的问题是我不能使用鼠标滚轮滚动,除非我有一个垂直滚动条。有没有办法隐藏这个滚动条,仍然可以用鼠标滚轮滚动?

到目前为止,我有几个想法可以做到这一点,但不知道如何实现它们。

  • 使用MouseWheel事件重新创建滚动代码
  • 更改滚动条的视觉样式以隐藏它或使其不太明显
  • 编写我自己的TextBox小部件
  • 将滚动条与其他内容重叠以隐藏它们

P.S。:使用任何win32东西都不是一种选择。

1 个答案:

答案 0 :(得分: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();
        }
    }
    
  3. 在任何一种情况下,请告诉我,如果您想要相同的运行样本;或者如果你不喜欢这个解决方案(0: