闲着无聊,实现了WinForm的Anchor效果
效果是让控件动态适应窗口大小的改变。
使用很简单,一行代码:
在C# WinForm中,可以给控件指定一个Anchor属性
效果就是当父窗口的尺寸改变了,让子控件移动,或改变大小
参考:https://blog.csdn.net/shunhua19881987/article/details/122553926
Anchor属性
正如名称暗示的那样,这个属性迫使控件将其自身定位在父窗体或父控件中的某个相对或绝对位置。这个属性有四个可以开启或关闭的值:
Top——表示控件中与父窗体(或父控件)相关的顶部应该保持固定。
Bottom——表示控件中与父窗体(或父控件)相关的底边应该保持固定。
Left——表示控件中与父窗体(或父控件)相关的左边缘应该保持固定。
Right——表示控件中与父窗体(或父控件)相关的右边缘应该保持固定。
windows窗口坐标系,原点在左上角,所以很自然的,Anchor Left和Top成为了默认值
如果指定Right或Bottom,父窗口尺寸变化时,控件会移动,使控件右边或底边与父窗口的边缘距离保持不变(可以同时指定)
如果同时指定Left和Right,或Top和Botton,父窗口尺寸变化时,控件会改变大小,使控件左边和右边,或顶边和底边与父窗口边缘的距离保持不变(4个都可以同时指定)
如果一个都不指定,控件相对父窗口的中心点保持不动
易语言实现:
调用方法只有一行代码,每个控件的Ancho属性,通过易语言控件的标记属性指定。
识别文本:<>AVO
<>AV可以象形的理解成箭头符号,<就是指向左边,就相当于设置了Anchor Left,>AV同样的道理。
因为我们大多是希望相对左上保持不变,所有希望当没有指定任何符号时,“<A”是默认值,这样的话,就需要另一个符号来表示一个都不选:大写的O
O优先级最低,如果同时设置了<AO,O没有效果
如果单独指定了O,控件的左边和顶边相对窗口的中心点对其
如果指定了O和其他符号,在没有指定符号的维度(水平,垂直)上,才生效,所以说O优先级最低。比如:指定了O<,水平方向,相对左边不改变,单垂直方向,相对窗口中心点对齐。
符号的顺序没有关系,内部使用寻找文本来检索符号
上面截图指定的符号说明:
已知bug:包含子控件的容器控件(分组框,选择夹),设置的标记符号没有效果(因为没有通过句柄获取到设置的标记)
感谢:@qq793359277
易语言组件的标记,能通过句柄获取到吗?
https://bbs.125.la/forum.php?mod=viewthread&tid=14766260
(出处: 精易论坛)
如果有更好的获取方法,就更好了
源码:
实现WinForm_Anchor.e
(21.86 KB, 下载次数: 171)
|