在.NET(Winforms)中的表单中居中控件?

use*_*741 131 .net c# winforms center-align

我试图将固定大小的控件集中在一个表单中.

出于兴趣,有没有非愚蠢的方式这样做?我真正想要的是类似于text-align css属性的东西.

目前,我正在将周围表单的padding属性设置为合适的大小,并将控件的Dock属性设置为fill.

spl*_*tne 242

你可以通过使用来实现这一点.或者更确切地说是不使用它们.

默认情况下,控件锚定在窗体的左上角,这意味着当窗体大小发生更改时,它们与窗体左上角的距离将保持不变.如果将控件锚更改为左下角,则控件将在窗体调整时保持与窗体底部和左侧相同的距离.

在调整大小时,关闭方向上的锚点将使控件在该方向上居中.

注意: 通过VS2015中的属性窗口关闭锚定可能需要输入None,None(而不是默认的Top,Left)

  • 真棒.我已经在.net中使用UI多年了,我已经使用了各种各样的锚点,我完全不知道(直到现在)将它设置为None的(非常有用的)行为.疯狂. (3认同)
  • 然后,如果我在中心放置一个标签并将其Anchor设置为None,那么为什么在窗体窗口最大化时它不会保持在中心位置? (2认同)

Mit*_*eat 109

myControl.Left = (this.ClientSize.Width - myControl.Width) / 2 ;
myControl.Top = (this.ClientSize.Height - myControl.Height) / 2;
Run Code Online (Sandbox Code Playgroud)

  • 将上面的代码添加到System.Windows.Forms.Form SizeChanged事件和瞧. (15认同)
  • 我认为即使在运行时调整表单大小,这也是将控件实际保持在中心的正确答案。 (3认同)

Rob*_*ean 44

由于您没有说明表单是否可以调整大小,如果您不关心调整大小(如果您确实关心,请使用Mitch Wheats解决方案),这是一种简单的方法:

选择控件 - >格式(菜单选项) - >窗口中心 - >水平或垂直

  • 为什么mitch的调整大小比在设计师中锚定更好? (2认同)

小智 8

我找到了一个很好的方法,它可以使用多个控件.添加一个包含3列的TableLayout.使中心列为绝对大小(无论您需要多大的空间).将两个外部列设置为100%.将面板添加到中间列并添加所需的任何控件并将它们放在所需的位置.该中心面板现在将保持在您的表单中心.


dan*_*004 5

要将Button置于其他容器的面板o中,请执行以下步骤:

  1. 在设计时设定位置
  2. 转到属性按钮的锚点,并将此值设置为跟随图像

在此输入图像描述


M. *_*osh 5

另外,如果要将其与另一个控件的中心对齐:

//The "ctrlParent" is the one on which you want to align "ctrlToCenter".
//"ctrlParent" can be your "form name" or any other control such as "grid name" and etc.
ctrlToCenter.Parent = ctrlParent;

ctrlToCenter.Left = (ctrlToCenter.Parent.Width - ctrlToCenter.Width) / 2;
ctrlToCenter.Top = (ctrlToCenter.Parent.Height - ctrlToCenter.Height) / 2;
Run Code Online (Sandbox Code Playgroud)