当前位置:  开发笔记 > 编程语言 > 正文

有没有一种快速的方法来获得鼠标下的控制?

如何解决《有没有一种快速的方法来获得鼠标下的控制?》经验,为你挑选了1个好方法。

我需要在另一个控件的事件中找到鼠标下的控件.我可以从使用开始GetTopLevel并迭代GetChildAtPoint,但有更快的方法吗?



1> Hans Passant..:

这段代码没有多大意义,但它确实避免遍历Controls集合:

[System.Runtime.InteropServices.DllImport("user32.dll")]
private static extern IntPtr WindowFromPoint(Point pnt);

private void Form1_MouseMove(object sender, MouseEventArgs e) {
  IntPtr hWnd = WindowFromPoint(Control.MousePosition);
  if (hWnd != IntPtr.Zero) {
    Control ctl = Control.FromHandle(hWnd);
    if (ctl != null) label1.Text = ctl.Name;
  }
}

private void button1_Click(object sender, EventArgs e) {
  // Need to capture to see mouse move messages...
  this.Capture = true;
}

推荐阅读
地之南_816
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有