C# 窗体的 Location 是什么意思

低调的感觉 2008-11-18 05:06:06
FrmInfo frm = new FrmInfo();
Point MousePos = Control.MousePosition;
frm.Location = new Point(MousePos.X + 30, MousePos.Y + 30);
frm.Show();

以上是我的代码
我想实现的是:
我鼠标不管点击哪里
FrmInfo 窗体都是鼠标点击处的右下角
但是上面的代码却实现不了
我也不知道哪里错了
请高手指点下
...全文
1233 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wiilucky 2008-11-18
  • 打赏
  • 举报
回复
你应该转化成屏幕坐标后再付给
frm.Location

你现在付的坐标值是相对当前窗口内部的坐标值。

也可以这样写

FrmInfo frm = new FrmInfo();
Point MousePos = Control.MousePosition;
frm.Location = new Point(this.Location.x + MousePos.X + 30, this.Location.y + MousePos.Y + 30);
frm.Show();
bbbbbb888888 2008-11-18
  • 打赏
  • 举报
回复
form的位置.
是相对parent的位置.
hm7921936 2008-11-18
  • 打赏
  • 举报
回复
明显如果离开FROM的范围在点 就不属于你APP的消息了.
需要全局钩子来处理

bloodish 2008-11-18
  • 打赏
  • 举报
回复
这个好像要用系统钩子吧,不然你在窗体外面点击了怎么跟随?
heyu1000 2008-11-18
  • 打赏
  • 举报
回复
恩,同时1楼的说法,你可以在鼠标点击事件中去重新设置位置。
周公 2008-11-18
  • 打赏
  • 举报
回复
Location 属性:控件的左上角相对于其容器的左上角的坐标。
由于 Point 类是值类型(在 Visual Basic 中是 Structure,在 Visual C# 中是 struct),它按传值方式返回,意味着访问该属性将返回控件的左上点的副本。因此,调整从该属性返回的 Point 的 X 或 Y 属性将不影响控件的 Left、Right、Top 或 Bottom 属性值。若要调整这些属性,请分别设置每个属性值,或用新的 Point 设置 Location 属性。

如果 Control 是 Form,那么 Location 属性值表示 Form 的左上角(以屏幕坐标表示)。

111,119

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧