C#获取容器窗体中控件Location问题

C#将相对于屏幕的坐标转化为相对于控件的坐标?,怎么弄?
窗体内的所有控件都有Location这个属性。对于直属于窗体的控件来说,Location的值就是该控件相对于窗体左上角的 坐标 。如果要获取控件相对于另一个控件的坐标,可以使用后一个控件的坐标减去前一个控件的坐标即可。需要注意一点的是:控件的Location属性是相对于其父容器来说的,如果两个控件属于两个不同的父容器,那么获取到的相对于控件的坐标可能会有错。

控件的Location属性是只读的,所以不能通过改变Location的值来改变控件的位置,但是可以通过控件的Left和Top这两个属性来改变控件的位置。

c#如何确定容器中的控件在容器中的位置
[控件].left //控件左上角点与容器左上角点的横向距离
[控件].top //控件左上角点与容器左上角点的 纵向距离
[控件].location.x //控件左上角与容器左上角的横向距离
[控件].location.y //控件左上角与容器左上角的纵向距离
[控件].width //控件的宽度
[控件].height //控件的高度
有了上面几个完全可以知道控件的位置

C#将相对于屏幕的坐标转化为相对于控件的坐标?,怎么弄?
所有Control都有一个方法:
PointToClient

屏幕坐标

一种坐标,其 X 和 Y 屏幕位置是相对于屏幕的左上角(将该左上角当作原点 (0,0))指定的。

Client Coordinates - 工作区坐标

一种坐标,其 X 和 Y 屏幕位置是相对于应用程序的左上角(将该左上角当作原点 (0,0))指定的。在从右向左 (RTL) 的应用程序中,右上角为原点。

如下图,有个设置窗体是放在TabControl中的,现在想在点击“专案编号”后面的”>>“时,“专案编号”TextBox正下方弹出一个小窗体,要怎样控制弹出窗体的Location?谢谢大家先!

在这里插入图片描述
Control.MousePosition 属性,获取鼠标光标的位置(以屏幕坐标表示)

Control.PointToClient(Point p)方法,可将指定屏幕点的位置计算成工作区坐标

Control.PointToScreen(Point p)方法,可将指定工作区的位置计算成屏幕坐标

猜你喜欢

转载自blog.csdn.net/wojiuguowei/article/details/120845834
今日推荐