如何在UserControl中捕获MouseWheel事件?

时间:2015-03-02 13:46:13

标签: .net winforms scroll user-controls

我有一个UserControl派生控件。当用户移动鼠标滚轮时,我想抓住并回复它。

我已经尝试过使用Scroll事件,但这似乎从来没有引发我猜测是因为我的控件没有(或不需要)滚动条。

我在Windows窗体设计器中找不到MouseWheel事件,尽管the docs表明它应该是每个Control派生元素的一部分。同样,the docs建议UserControl是衍生品,因此它应该支持该事件。

我错过了什么?

2 个答案:

答案 0 :(得分:4)

如果其他人都面临这种情况,最后我只是添加了一些处理 父控件在用户控件中调用功能:

    Form1(void)
    {
        InitializeComponent();

        MouseWheel += gcnew MouseEventHandler(this, &Form1::MouseWheelHandler);
    }

    void MouseWheelHandler(Object^ sender, MouseEventArgs^ e)
    {
        m_myUserControl->MouseWheel(e->Delta);
    }

答案 1 :(得分:0)

一种从UserControls获取鼠标事件的解决方案是设置控件的Background。每个面板(网格,画布等)都需要Backgroundcolor来处理鼠标事件。

因此只需在控件中添加透明背景,即可捕获滚动事件

Background="Transparent"