问题描述
- C#winform如何获取全局其它窗口中的控件位置和大小
- winform,程序运行后
希望用户在任何其它窗口中点击鼠标时,记录鼠标点击的位置,如果点击的是个textbox,就记录那个textbox的位置和大小
捕获鼠标点击已经用全局钩子实现,控件那个需求完全没思路,求思路
解决方案
首先自定义一个鼠标点击的参数类 参数类包含了点击控件的对象(位置大小) 包含了鼠标的状态(坐标)
public class MouseEventArgsParameter
{
public MouseEventArgsParameter(MouseEventArgs args Control control)
{
MouseEventArgs = args;
Control = control;
}
public MouseEventArgs MouseEventArgs { get; set; }
public Control Control { get; set; }
}
在窗体增加LoadLocation方法用来动态为窗口所有的控件增加鼠标点击的事件
public void LoadLocation()
{
foreach (Control control in this.Controls)
{
control.MouseClick += new MouseEventHandler(control_MouseClick);
}
}
这里是鼠标点击的事件然后重新自定义一个鼠标的事件将控件和鼠标的属性变成一个对象以便使用
void control_MouseClick(object sender MouseEventArgs e)
{
MouseClick_Handler(new MouseEventArgsParameter(e (Control)sender));
}
public void MouseClick_Handler(MouseEventArgsParameter args)
{
MessageBox.Show(string.Format(""所点击的控件名称:{0} 位置:{1} 大小:{2}"" args.Control.Name("" + args.Control.Location.X + "" + args.Control.Location.Y + "")""宽"" + args.Control.Size.Width + "" 高"" + args.Control.Size.Height));
}