C# WinForm 怎样给控件添加滚动条事件?

我是想在TreeView拉动滚动条或者点击滚动条上下小按钮时触发事件。它本身是没有这个事件的,我想过在鼠标事件中来判断滚动条是否变动,但是当鼠标在滚动条上操作时既不触发控... 我是想在 TreeView 拉动滚动条或者点击滚动条上下小按钮时触发事件。
它本身是没有这个事件的,我想过在鼠标事件中来判断滚动条是否变动,但是当鼠标在滚动条上操作时既不触发控件的鼠标单击事件也不触发窗体的鼠标单击事件所以无从下手。
鼠标滚轮的情况我已经解决了不用多说。
谢谢了在线等。
展开
 我来答
阳光的雷咩咩
推荐于2017-12-15 · TA获得超过1.4万个赞
知道大有可为答主
回答量:2.3万
采纳率:66%
帮助的人:7709万
展开全部

测试了一下,可以使用自定义事件。

    public partial class Form1 : Form
    {
        //定义事件
        public event EventHandler HScrollEvent;
        public event EventHandler VScrollEvent;

        public Form1()
        {
            InitializeComponent();
            //注册事件
            this.VScrollEvent += delegate
            {
                { this.Text = "纵向滚动了!"; };
            };
        }

        protected override void WndProc(ref Message m)
        {
            //在输出窗口自己看对应的数字是多少
            Debug.Print(m.Msg.ToString());

            switch (m.Msg.ToString())
            {
                case "528"://我测试对应垂直滚动
                    //引发事件
                    if (this.VScrollEvent != null)
                        this.VScrollEvent(this, null);
                    break;
                case "你自己检测数字":
                    if (this.HScrollEvent != null)
                        this.HScrollEvent(this, null);
                    break;
                default:
                    break;
            }
            base.WndProc(ref m);
        }

        private void button1_Click(object sender, EventArgs e)
        {
            this.Text = "";//清空便于对比
        }
    }
追问
好厉害啊!!WndProc这个函数我第一次见到,学习了!
追答
有智能感知的啊。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式