首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
窗体 winform
按钮 button
下拉列表框和文本框
复选框,单选框
列表框,标签
图片框PictureBox
窗口关闭时最小化到托盘
C#窗口关闭时最小化到托盘
C#去边框以及无边框窗体移动
悬浮窗口+无边框窗体移动方法2
C#中WinForm控件自适应窗口大小
C#实现将日志写入文本文件的方法
当前位置:
首页>>
技术小册>>
C#学习笔记
小册名称:C#学习笔记
public partial class Form1 : Form {在此粘贴代码},即可实现控件自适应窗口的效果 ```csharp //默认主窗口类名称为Form1,在此添加代码 public partial class Form1: Form { public Form1() { InitializeComponent(); } //从这里开始复制下面的代码!!! //第一步,定义控件自适应窗口类AutoSizeFormClass class AutoSizeFormClass { public struct controlRect { public int Left; public int Top; public int Width; public int Height; } public List < controlRect > oldCtrl = new List < controlRect > (); int ctrlNo = 0; //重要方法一:记录窗体和其控件的初始位置和大小controllInitializeSize() public void controllInitializeSize(Control mForm) { controlRect cR; cR.Left = mForm.Left; cR.Top = mForm.Top; cR.Width = mForm.Width; cR.Height = mForm.Height; oldCtrl.Add(cR); AddControl(mForm); } private void AddControl(Control ctl) { foreach(Control c in ctl.Controls) { controlRect objCtrl; objCtrl.Left = c.Left; objCtrl.Top = c.Top; objCtrl.Width = c.Width; objCtrl.Height = c.Height; oldCtrl.Add(objCtrl); if (c.Controls.Count > 0) AddControl(c); } } //重要方法二:控件自适应大小方法controlAutoSize() public void controlAutoSize(Control mForm) { if (ctrlNo == 0) { controlRect cR; cR.Left = 0; cR.Top = 0; cR.Width = mForm.PreferredSize.Width; cR.Height = mForm.PreferredSize.Height; oldCtrl.Add(cR); AddControl(mForm); } float wScale = (float) mForm.Width / (float) oldCtrl[0].Width; float hScale = (float) mForm.Height / (float) oldCtrl[0].Height; ctrlNo = 1; AutoScaleControl(mForm, wScale, hScale); } private void AutoScaleControl(Control ctl, float wScale, float hScale) { int ctrLeft0, ctrTop0, ctrWidth0, ctrHeight0; foreach(Control c in ctl.Controls) { ctrLeft0 = oldCtrl[ctrlNo].Left; ctrTop0 = oldCtrl[ctrlNo].Top; ctrWidth0 = oldCtrl[ctrlNo].Width; ctrHeight0 = oldCtrl[ctrlNo].Height; c.Left = (int)((ctrLeft0) * wScale); c.Top = (int)((ctrTop0) * hScale); // c.Width = (int)(ctrWidth0 * wScale); c.Height = (int)(ctrHeight0 * hScale); // ctrlNo++; if (c.Controls.Count > 0) AutoScaleControl(c, wScale, hScale); if (ctl is DataGridView) { DataGridView dgv = ctl as DataGridView; Cursor.Current = Cursors.WaitCursor; int widths = 0; for (int i = 0; i < dgv.Columns.Count; i++) { dgv.AutoResizeColumn(i, DataGridViewAutoSizeColumnMode.AllCells); // 自动调整列宽 widths += dgv.Columns[i].Width; // 计算调整列后单元列的宽度和 } if (widths >= ctl.Size.Width) // 如果调整列的宽度大于设定列宽 dgv.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCells; // 调整列的模式 自动 else dgv.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; // 如果小于 则填充 Cursor.Current = Cursors.Default; } } } } //第二步,实例化上面定义的类 AutoSizeFormClass asc = new AutoSizeFormClass(); //第三步,初始化窗口时记录控件的大小和位置 private void Form1_Load(object sender, EventArgs e) { asc.controllInitializeSize(this); } //第四步,主窗口大小发生变化触发的事件 private void Form1_SizeChanged(object sender, EventArgs e) { asc.controlAutoSize(this); } } ```
上一篇:
悬浮窗口+无边框窗体移动方法2
下一篇:
C#实现将日志写入文本文件的方法
该分类下的相关小册推荐:
暂无相关推荐.