C# 如何判断用户何时单击了超出您控制范围的内容?

C# 如何判断用户何时单击了超出您控制范围的内容?,c#,winforms,C#,Winforms,我有一个自定义用户控件。我想在一些不同的产品中使用它,所以我想要一些可以在UserControl本身内部实现的东西。我想知道用户何时在UserControl的边界之外单击,以便我可以隐藏它,类似于组合框。我该怎么做 我尝试处理单击事件,但只有当单击发生在控件的范围内时,它才会触发。Hm,您可以通过收听GotFocus/LostFocus事件来完成所需的操作。组合框在下拉框打开时提供焦点,在下拉框失去焦点时提供关闭焦点。执行此操作 选择窗体上的所有控件,包括窗体 在属性窗口中选择鼠标单击事件 现

我有一个自定义用户控件。我想在一些不同的产品中使用它,所以我想要一些可以在UserControl本身内部实现的东西。我想知道用户何时在UserControl的边界之外单击,以便我可以隐藏它,类似于组合框。我该怎么做


我尝试处理单击事件,但只有当单击发生在控件的范围内时,它才会触发。

Hm,您可以通过收听GotFocus/LostFocus事件来完成所需的操作。组合框在下拉框打开时提供焦点,在下拉框失去焦点时提供关闭焦点。

执行此操作

  • 选择窗体上的所有控件,包括窗体
  • 在属性窗口中选择鼠标单击事件
  • 现在在Common_鼠标单击中输入以下代码
代码:

 if (!sender.Equals(yourControl))
  {
        yourControl.Visible=false;
  }

这就是Capture属性的设计目的。将其设置为true,则所有鼠标消息都将路由到控件,即使它移出窗口边界。检查MouseDown事件中的e.Location属性。

该问题特别要求“可以在UserControl本身内部实现的内容”。您的建议只有在包含UserControl的表单上实现时才有效。