C# 如何判断用户何时单击了超出您控制范围的内容?
我有一个自定义用户控件。我想在一些不同的产品中使用它,所以我想要一些可以在UserControl本身内部实现的东西。我想知道用户何时在UserControl的边界之外单击,以便我可以隐藏它,类似于组合框。我该怎么做C# 如何判断用户何时单击了超出您控制范围的内容?,c#,winforms,C#,Winforms,我有一个自定义用户控件。我想在一些不同的产品中使用它,所以我想要一些可以在UserControl本身内部实现的东西。我想知道用户何时在UserControl的边界之外单击,以便我可以隐藏它,类似于组合框。我该怎么做 我尝试处理单击事件,但只有当单击发生在控件的范围内时,它才会触发。Hm,您可以通过收听GotFocus/LostFocus事件来完成所需的操作。组合框在下拉框打开时提供焦点,在下拉框失去焦点时提供关闭焦点。执行此操作 选择窗体上的所有控件,包括窗体 在属性窗口中选择鼠标单击事件 现
我尝试处理单击事件,但只有当单击发生在控件的范围内时,它才会触发。Hm,您可以通过收听GotFocus/LostFocus事件来完成所需的操作。组合框在下拉框打开时提供焦点,在下拉框失去焦点时提供关闭焦点。执行此操作
- 选择窗体上的所有控件,包括窗体
- 在属性窗口中选择鼠标单击事件
- 现在在Common_鼠标单击中输入以下代码
if (!sender.Equals(yourControl))
{
yourControl.Visible=false;
}
这就是Capture属性的设计目的。将其设置为true,则所有鼠标消息都将路由到控件,即使它移出窗口边界。检查MouseDown事件中的e.Location属性。该问题特别要求“可以在UserControl本身内部实现的内容”。您的建议只有在包含UserControl的表单上实现时才有效。