自定义用户控制鼠标事件c#

时间:2012-12-26 08:24:25

标签: click controls custom-controls mouse

我创建了一个设计为

的自定义用户事件

enter image description here

我为该设计创建了一个鼠标点击事件

    protected override void OnControlAdded(ControlEventArgs e)
    {
        base.OnControlAdded(e);
        e.Control.Click += new EventHandler(Control_Click);
    }

    protected override void OnControlRemoved(ControlEventArgs e)
    {
        e.Control.Click -= new EventHandler(Control_Click);
        base.OnControlRemoved(e);
    }

    void Control_Click(object sender, EventArgs e)
    {
        this.OnClick(e);
    }

只有在单击不包含PictureBoxes区域和标签区域的区域时,鼠标事件才有效。

我的意思是当我点击用户控件的图片框区域或标签区域时,鼠标单击不起作用。在其他区域,鼠标单击正在工作。

为什么呢?

2 个答案:

答案 0 :(得分:1)

尝试一下:

将诸如以下的事件添加到您的控件中:

public new event MouseEventHandler MouseClick
{
    add
    {
        base.MouseClick += value;
        foreach (Control control in Controls)
        {
            control.MouseClick += value;
        }
    }
    remove
    {
        base.MouseClick -= value;
        foreach (Control control in Controls)
        {
            control.MouseClick -= value;
        }
    }
}

我认为这可以解决您的问题。

答案 1 :(得分:0)

https://msdn.microsoft.com/ru-ru/library/ms171545(v=vs.110).aspx

  

只有前景窗口才能捕获鼠标。当一个背景窗口   尝试捕获鼠标时,窗口仅接收鼠标指针位于窗口可见部分内时发生的鼠标事件的消息。此外,即使前景窗口捕获了鼠标,用户仍然可以单击另一个窗口,将其带到前台。捕获鼠标时,快捷键不起作用。

尝试寻找透明backColor的使用。