在C#winform中,可以用Control.MousePosition获得当前鼠标的坐标,使用PointToClient计算鼠标相对于某个控件的坐标,如下
附,参考文章CSDN回答
鼠标移动的事件属于某个控件, 你写的代码也跟那个控件有关.如果鼠标移出那个控件怎么办, 需要 grab 住鼠标, 使得鼠标移动到外面, 控件仍旧能接收到鼠标消息.随后你就跟踪鼠标移动事件,在移动中:
|
|
给你一个完整的示例:
1234567891011121314151617181920212223242526272829303132333435363738 /*********************** 课题:将窗体中鼠标所在控件名显示在窗体标题上* 作者:ZAXX* QQ : 94027486* 本课题可简单扩展:获取屏幕上鼠标所在位置的窗口句柄与类名**********************/using System;using System.Drawing;using System.Windows.Forms;using System.Runtime.InteropServices;namespace Zaxx{public partial class MouseOnControl: Form{[DllImport("User32.dll")]private static extern IntPtr WindowFromPoint(Point p);Timer timer;public MouseOnControl(){InitializeComponent();timer = new Timer();timer.Interval = 200;timer.Enabled = true;timer.Tick += new EventHandler(timer_Tick);}void timer_Tick(object sender, EventArgs e){Point p = Cursor.Position;IntPtr h = WindowFromPoint(p);foreach (Control con in this.Controls)if (con.Handle == h)this.Text = con.Name;}}}