想做一个简单的的(c#)基于ie内核的浏览器,在显示鼠标在窗体上的坐标时候遇到了一个问题。
现在使用的代码如下:private static Point pt;
private void Form1_MouseMove(object sender, MouseEventArgs e)
{
pt.X = Control.MousePosition.X;
pt.Y = Control.MousePosition.Y;
this.Labell.Text = "(" + Convert.ToString(this.Top) + "," + Convert.ToString(this.Left) + ")";
}
在空的Form的情况下,是可以正常的显示出鼠标在窗体上的坐标位置的。
但是如果From上面放了其它的控件,如一个webBorwser,鼠标在From的空白区域可以获取到坐标值,鼠标如果放到webBorwser上,就显示不出来相对于窗体的坐标了。希望高手解答
现在使用的代码如下:private static Point pt;
private void Form1_MouseMove(object sender, MouseEventArgs e)
{
pt.X = Control.MousePosition.X;
pt.Y = Control.MousePosition.Y;
this.Labell.Text = "(" + Convert.ToString(this.Top) + "," + Convert.ToString(this.Left) + ")";
}
在空的Form的情况下,是可以正常的显示出鼠标在窗体上的坐标位置的。
但是如果From上面放了其它的控件,如一个webBorwser,鼠标在From的空白区域可以获取到坐标值,鼠标如果放到webBorwser上,就显示不出来相对于窗体的坐标了。希望高手解答
解决方案 »
- SqlServer中高级查询,group by,打印信息 ??????
- 关于MDI程序的问题?
- 数据库中image类型怎么插入
- 类似QQ或MSN表情弹出框,并实现插入表情功能实现?(winform)
- ISO-2022-JP编码问题求解~~急啊
- 有人了解StyledForms.GoogleTalkForm 这个东西吗??
- 一个配置文件的问题,绑定解释下。
- 求一个c#操作word的插件。
- 简述C#中 .NET数据提供程序的4个核心对象的功能
- C# WinForm DateTimePicker控件 如何显示"时分秒"
- 我是菜鸟想问下uncheck的作用
- 如何向dropdownlist里面添加一个二维数组
--------------------------------------
哪有这个事件.......楼主的贴子发了两次。
{
InitializeComponent(); CatchMouseMove(this);
} private void CatchMouseMove(Control ctrl)
{
ctrl.MouseMove += new MouseEventHandler(Form1_MouseMove);
foreach(Control ctrl1 in ctrl.Controls)
CatchMouseMove(ctrl1);
} private static Point pt; private void Form1_MouseMove(object sender, MouseEventArgs e)
{
pt.X = Control.MousePosition.X;
pt.Y = Control.MousePosition.Y;
this.Labell.Text = "(" + Convert.ToString(this.Top) + "," + Convert.ToString(this.Left) + ")"; }
2.获取鼠标坐标Controls.MousePosition,然后将其也转换为屏幕坐标;
3.将2和1的坐标进行运算,得到鼠标位置相对于Form的工作区坐标;
static extern bool ClientToScreen(IntPtr hWnd,ref Point lp);
private void Form1_MouseMove(object sender,System.Windows.Forms.MouseEventArgs e)
{
bool tmp;
Point lpoint=new Point(e.X,e.Y);
lpoint.X=e.X;
lpoint.Y=e.Y;
textBox1.Text=e.X.ToString()+","+e.Y.ToString();
tmp=ClientToScreen(this.Handle,ref lpoint);
textBox2.Text=lpoint.X.ToString()+","+lpoint.Y.ToString();
}
{
Timer _Timer = new Timer();
_Timer.Interval = 1;
_Timer.Tick += new EventHandler(_Timer_Tick);
_Timer.Enabled = true;
} void _Timer_Tick(object sender, EventArgs e)
{
Point _Point =this.PointToClient(Cursor.Position);
Control _SubControl = this.GetChildAtPoint(_Point); if (_SubControl == null)
{
this.Text = "Form" + _Point.ToString();
}
else
{
this.Text = _SubControl.Name + _SubControl.PointToClient(Cursor.Position).ToString();
}
}