C#获取容器窗体中控件Location问题
2017-09-21 15:59
746 查看
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?谢谢大家先!
![](http://p7.qhimg.com/t01a3e8d67f1f8adc36.jpg)
Control.MousePosition 属性,获取鼠标光标的位置(以屏幕坐标表示)
Control.PointToClient(Point p)方法,可将指定屏幕点的位置计算成工作区坐标
Control.PointToScreen(Point p)方法,可将指定工作区的位置计算成屏幕坐标
相关文章推荐
- android:descendantFocusability——父容器和子控件的焦点获取问题
- android:descendantFocusability——父容器和子控件的焦点获取问题
- C#通过API获取接收数据窗体控件句柄,并向该句柄发送文本信息
- C#跨线程调用窗体控件的问题
- C#跨线程调用窗体控件的问题
- C#获取当前窗体的受焦控件。
- C#.NET常见问题(FAQ)-如何让控件或者窗体本身全屏
- ASP.NET 4.0 ListView等容器控件中获取ClientID值与HTML中自动生成ID字符串不一样问题。
- C# 在一个窗体中调用另一个窗体的控件可能出现的问题
- c# 控件,线程间操作(获取主窗体控件的数据)
- C# 解决panel或者其他控件叠加时,此控件背景透明,显示的背景色为窗体背景色问题
- c# 把窗体嵌入到容器控件中
- C# 获取父控件容器的属性
- C#基础系列:开发自己的窗体设计器(在容器上拖动鼠标增加控件)
- 【原创】C# 批量移除容器内控件的问题 循环移除控件
- C#中子窗体获取父窗体中控件的内容
- C#中继承窗体会导致控件消失的问题解决
- c#在使用panel容器将无边框窗体作为子窗体的时候点击窗体控件激活窗体的办法
- c#中跨线程调用windows窗体控件 .我们在做winform应用的时候,大部分情况下都会碰到使用多线程控制界面上控件信息的问题。然而我们并不能用传统方法来做这个问题,下面我将详细的介绍。
- C# WinForm窗体中有控件时keyDown事件问题处理方式