【问题标题】:Custom User Control Mouse Event c#自定义用户控制鼠标事件 c#
【发布时间】:2012-12-26 08:24:25
【问题描述】:

我创建了一个自定义用户事件,其设计为

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

    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 区域和标签区域的区域时才起作用。

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

为什么?

【问题讨论】:

  • 看看我的回答。它应该可以解决您的问题。

标签: click controls custom-controls mouse


【解决方案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;
        }
    }
}

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

【讨论】:

    【解决方案2】:

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

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

    尝试寻找透明背景色的使用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-27
      • 1970-01-01
      • 2011-01-12
      • 1970-01-01
      相关资源
      最近更新 更多