C# Winform 怎么让按钮在Panel里居中显示
把pannel里面的多个按钮的那个anchor属性全部去掉,如下图:
再用VS2010自带的工具调一下即可:
小注:
有的时候我们却想子控件在父控件里的相对位置不要随着父控件的变大缩小而变化,或者控件边缘距离父控件边缘的相对距离不要发生变化,但又不是停靠在父控件的边缘,这就是Anchor该出场的时候了。Anchor的中文意思:锚。当给控件设置Anchor的时候,就相当于用一个铁钉将控件的边缘给钉住。
出处:https://blog.csdn.net/jiankunking/article/details/21643541
=======================================================
C#之winform设置控件居中
在C#的窗体编程,winfrom里面,原生控件卧槽般的坑爹,没有居中这种属性,这是很恶心的一件事情。
对比java的窗体,有不少布局是支持设置居中的,android更不用说。而winfrom这家伙没有。虽然java的窗体很丑很丑很丑,可C#在这方面实在是吐血到人了,一方面是非常优秀的图形化设计,一拖一拉,就设计好了,一边是坑爹般的居中属性没看到。
更坑爹的是,百度出来的答案净说废话,无图无真相。资料很少。
最终还得亲自出马,上穷碧落下黄泉,解决了这个问题:
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
当然也可以在代码设计器方法中用代码进行计算,但意义不大,结果是导致预览界面引发异常或错误,但程序运行则能够正常显示。
用代码重写OnResize方法,控制控件居中示意图:
并且放大依然保持居中:
出处:https://blog.csdn.net/mingyueyixi/article/details/55035935/
C# Winform 怎么让按钮在Panel里居中显示的更多相关文章
- WinForm点击按钮在对应的panel里画图
panel在form1里,button在form1上方,panel在下面. 主要是在button1的click时间获取panel的画笔. 下面的不行,在panel里获取画笔,然后传到button1,根 ...
- winform里操作打开在panel里的form窗体,子窗体操作同级子窗体或者父窗体的方法
最近开始了一个winform项目,原先一直都是web项目.遇到个问题,就是在框架内,左侧和中间的main都是用panel来实现的form,就是把form窗体打开到panel里,实现左侧是导航,中间是操 ...
- 小数运算需要注意什么? 接口和抽象类 WinForm窗体上两个panel,怎么实现一个panel固定漂浮在另一个panel之上
小数运算需要注意什么? 1. 生活中0.1+0.2=0.3, 计算机中可不是这样,为什么呢? 大家都知道计算机类型都是有数据范围的.整形int范围是 正负21亿左右,小数类型同样也是有范围的,但是即使 ...
- Winform软件,不要在线程里操作UI
对于Winform软件,不要在线程里操作UI,不要相信:StartForm.CheckForIllegalCrossThreadCalls = false; 于是,把所有的代码都改成主线程委托调用的方 ...
- C# WinForm开发系列 - ListBox/ListView/Panel
转自会飞的小猪文章 C# WinForm开发系列 - ListBox/ListView/Panel 在博客园看到了一篇博文,觉得很不错,就转载过来了. 包含自定义绘制的ListBox, 带拖动, ...
- Log4.Net 在Winform、MVC、ashx程序里的使用,ashx程序里使用异步
最近做一个双11活动的,是一套相关的H5页面.本来以为难度不大,但是做下来几天还是遇到些问题.就总结一下吧,还是有收获的. 1.在H5页面中,有一个遮罩层,还是挺有意思的.直接用div+css控制遮罩 ...
- C#中winform中panel重叠无法显示问题
C#中winform中panel重叠无法显示问题: 最近开发一个项目有个需求是需要多个模式来回切换的,本来考虑使用多个窗口来实现这个功能,但是这样做浪费资源,而且工作量大,所以想到使用panel控件来 ...
- delphi ,1)控件根据窗口大小,一直居中显示 2)显示最大化最小化按钮控件
一.控件根据窗口大小,一直居中显示 1)onResize:当窗体尺寸改变时发生 例子:如何使控件随窗口的放大和缩小动态改变自己的大小,使控件“保存.返回”在窗口变大变小中随着变. 在Panel调用 p ...
- css 多个不定数量提交按钮居中显示,纯css解决
前几天在公司修改一个css 多个按钮居中问题,其实这样的问题很多前端程序员都遇到过,举个例子吧: 在一行中有三个按钮或是两个按钮...个数不定,然后间距固定:然后就有很多人把所有按钮放到一个div中, ...
随机推荐
- Cracking The Coding Interview 9.6
//原文: // // Given a matrix in which each row and each column is sorted, write a method to find an el ...
- Spring异步调用注解@Async的使用
1.pom依赖 <dependency> <groupId>org.springframework</groupId> <artifactId>spri ...
- 堆排序python实现
def MAX_Heapify(heap,HeapSize,root):#在堆中做结构调整使得父节点的值大于子节点 left = 2*root+1 right = left + 1 larger = ...
- C++ operator new 重载(两个参数)
#include <iostream> class A { public: int i; public: void* operator new (size_t a, size_t b) { ...
- NodeJs -- URL 模块.
1. url.parse(网址): 将字符串 解析成对象. 1-1) 一个参数 : 或者 参数1, false(默认), false(默认) var url = require('url'); c ...
- centos /data目录扩容
/data盘被日志撑死了,必须扩容 有一块现成的100G的/dev/sdb盘,但是mount到了/data/test目录下,而且还有应用程序在上面进行读写操作 1.先查看哪些应用程序 在占用磁盘 #f ...
- django做redis缓存
django中应用redis:pip3 install django-redis - 配置 CACHES = { "default": { "BACKEND": ...
- ubantu 设置默认python3.叽叽叽的环境变量
wkp 发表于 2017-8-22 17:49:08 | 只看该作者 sudo vi ~/.bashrc 在里面加一句 alias python='python3' 或者再简单一点 alias p=' ...
- :after和:before伪元素的解释
:after 是清除浮动 让其高度和内容高度相同 :before 是防止上边塌陷 关注微信小程序
- Spring+Hessian+Maven+客户端调用实例
Hessian是一个采用二进制格式传输的服务框架,相对传统soap web service,更轻量,更快速.官网地址:http://hessian.caucho.com/ 先上个效果图,在客户端界面通 ...