c#通过子控件鼠标事件

时间:2016-06-10 10:11:31

标签: c# visual-studio

我有一个自定义用户控件,其中包含占用80%空间的图表元素。

如果将其放置在表单中,我可以单击未被图表占用的区域,并且单击/ mousedown / mouseup事件可以正常工作。但是当我点击图表区域时,鼠标事件没有通过,因此没有被触发。

是否有一种全局的方法可以在不为表单上的每个控件添加事件函数的情况下执行此操作?

    void Drag_MouseDown(object sender, MouseEventArgs e)
    {
        activeControl = sender as UserControl;
        previousLocation = e.Location;
        Cursor = Cursors.SizeAll;
    }

    void Drag_MouseMove(object sender, MouseEventArgs e)
    {
        if (activeControl == null || activeControl != sender)
            return;

        var location = activeControl.Location;
        location.Offset(e.Location.X - previousLocation.X, e.Location.Y - previousLocation.Y);
        activeControl.Location = location;
    }

    void Drag_MouseUp(object sender, MouseEventArgs e)
    {
        activeControl = null;
        Cursor = Cursors.Default;
    }

目前必须手动设置自定义用户控件和图表

1 个答案:

答案 0 :(得分:0)

似乎图表会覆盖您的鼠标事件。因此,您也可以尝试将事件侦听器添加到图表中。

PS:我们可以为不同的听众分配相同的方法。