欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C#按钮在窗体居中

程序员文章站 2022-06-10 13:38:01
...

1、通用型:重写OnResize(EventArgs e)方法,通过计算,重新定位控件的位置。(优点:准确,通用,即使窗体改变也能使用;缺点:麻烦,不爽,并且只有在运行的时候才能看到效果)

2、万能型:直接在属性界面计算出居中坐标,设置为控件的Location属性值。并设置锚点Anchor为Top,钉住控件顶部位置。(优点:准确,通用,能够实时预览;缺点:尼玛,一个控件算一次,算完还得写上去,不吐血?好,万一窗体大小改变了,万一有很多个控件呢?算不死你,小样的)

以上两种方法都是通过计算确定位置,一个是代码去确定的,一个是人工计算并填写,所以不止能设置居中,什么居左,居右,居上,居下,都是可以的。前提是,很烦。

3、Label控件:将label的AutoSize属性设置为false,把label控件拉满或设置Dock属性为fill,填满父容器,再设置TextAlgin为MiddleCenter(居中)即可。(优点:动动鼠标就ok,实时预览;缺点:只适用于不设置背景的label控件,label设置背景就和按钮一样了,而且控件多了尼玛互相覆盖,洒得到处都是)

属性说明: 
AutoSize(false):取消自动调整大小,这样控件就不会随窗体的改变而改变大小,位置等,并能够自定义控件的区域,位置等。

TextAlgin(MiddleCenter):文本对齐方式为居中。label的尺寸一般总是刚刚包围住所有文字,而且又是透明的,所以,正常情况下该属性没什么效果,只有当控件的区域比文字区域大了很多时,文字才明显不对头了。这时,就需要设置对齐方式。类似于对齐子控件,内容。

重写以设置居中的代码:

 protected override void OnResize(EventArgs e)
        {
            base.OnResize(e);
            int x = (int)(0.5 * (this.Width - label1.Width));
            int y = label1.Location.Y;
            label1.Location = new System.Drawing.Point(x,y);

        }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

当然也可以在代码设计器方法中用代码进行计算,但意义不大,结果是导致预览界面引发异常或错误,但程序运行则能够正常显示。