代码之家  ›  专栏  ›  技术社区  ›  esac

如何判断用户何时已在控件的边界之外单击?

  •  3
  • esac  · 技术社区  · 15 年前

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

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

    3 回复  |  直到 15 年前
        1
  •  3
  •   Hans Passant    15 年前

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

        2
  •  1
  •   scmccart    15 年前

    嗯,你可以通过听GotFocus/LostFocus事件来实现你想要的。组合框在下拉列表打开时提供焦点,在下拉列表失去焦点时关闭。

        3
  •  -1
  •   Javed Akram    15 年前

    做这个

    • 选择窗体上的所有控件,包括窗体
    • 在属性窗口中选择MouseClick事件

    代码:

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