VB.NET无边界窗体调整大小保持右侧固定的Anchor锚定用法咨询
结论
无法直接通过设置窗体的Anchor属性实现该效果。
原因说明
- WinForm中的
Anchor属性是子控件相对于父容器的定位规则,仅在「父容器大小发生变化时」生效,用来控制子控件的位置、大小如何跟随父容器调整。 - 当你修改顶级窗体自身的
Size属性时,窗体的父容器是桌面,Anchor属性不会对窗体自身的坐标计算产生任何作用,因此达不到你要的固定右侧、仅调整左侧的效果。
现有实现优化
你手动修改Size+Location的实现逻辑是完全正确的,你还可以通过提前记录窗体右侧坐标的写法优化代码,避免计算逻辑出错,可读性也更高:
Private Sub Form1_Click(sender As Object, e As EventArgs) Handles Me.Click ' 先保存调整前的窗体右侧坐标 Dim originalRight As Integer = Me.Right ' 修改宽度 Me.Width = CInt(Me.Width / 2) ' 直接设置左侧坐标,保证右侧位置和调整前完全一致 Me.Left = originalRight - Me.Width End Sub
如果是要实现拖拽边框调整大小的场景,也可以沿用同样的逻辑,在拖拽开始时记录初始右侧坐标,拖拽过程中实时计算宽度和左侧坐标即可。
内容的提问来源于stack exchange,提问作者Jarron
相关产品推荐
相关产品推荐

