【问题标题】:How to hide scroll bars without disabling them如何隐藏滚动条而不禁用它们
【发布时间】:2014-11-11 11:54:26
【问题描述】:

有没有办法在不显示滚动条的情况下在 RichTextBox 上滚动?我搜索了谷歌,但只找到了ScrollBars 属性。

我正在使用 Microsoft Visual C# Express,winforms。

编辑:
可以解决我的问题的方法是void,其中包含一些参数,例如 RTB、滚动的方向以及要走多远。

【问题讨论】:

标签: c# .net winforms richtextbox visual-c#-express-2010


【解决方案1】:

一些步骤:

  1. 将您的 RTB 放入面板(Dock:无)
  2. 调用 panel.width -= 20;在您的代码中。
  3. 现在我们需要一个没有焦点的鼠标滚轮滚动,使用下面的代码:

这里有一个小解决方法:

public Main()
{
    InitializeComponent();

    //Works for panels, richtextboxes, 3rd party etc..
    Application.AddMessageFilter(new ScrollableControls(richTextBox1));
}

ScrollableControls.cs:

using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;

//Let controls scroll without Focus();

namespace YOURNAMESPACE
{
    internal struct ScrollableControls : IMessageFilter
    {
        private const int WmMousewheel = 0x020A;
        private readonly Control[] _controls;

        public ScrollableControls(params Control[] controls)
        {
            _controls = controls;
        }

        bool IMessageFilter.PreFilterMessage(ref Message m)
        {
            if (m.Msg != WmMousewheel) return false;
            foreach (var item in _controls)
            {
                ScrollControl(item, ref m);
            }
            return false;
        }

        [DllImport("user32.dll")]
        private static extern int SendMessage(IntPtr hWnd, int msg, int wParam, int lParam);

        private static void ScrollControl(Control control, ref Message m)
        {
            if (control.RectangleToScreen(control.ClientRectangle).Contains(Cursor.Position) && control.Visible)
            {
                SendMessage(control.Handle, m.Msg, m.WParam.ToInt32(), m.LParam.ToInt32());
            }
        }
    }
}
  1. 请记住,第 3 方控件通常使用嵌套容器或类似 radScrollablePanel1.PanelContainer,因此您必须改为调用它们。

【讨论】:

  • 那我怎么称呼它?我是否在处理程序中放了一些东西?此外,可以解决我的问题的是 void 带有一些参数,例如 rtb,它可以向上或向下滚动一定距离。你能做到吗?谢谢!
猜你喜欢
  • 2012-01-31
  • 2014-04-23
  • 2011-12-14
  • 2013-09-21
  • 2020-01-22
  • 1970-01-01
  • 2011-07-22
  • 2019-11-14
  • 1970-01-01
相关资源
最近更新 更多