一、实现效果
1.1、未启用控件缩放的实现效果
即:未启用控件缩放效果代码时,控件内容都是固定在窗体界面的指定位置,不会跟随窗体的拉伸,放大而进行适配,如下图所示:
1.2、启用控件缩放的实现效果
即:启用控件缩放效果代码时,控件内容会跟随窗体的拉伸,放大而进行适配,如下图所示:
二、实现控件随窗体缩放适配
2.1、控件随窗体缩放适配思路
实现思路是:
①在窗体初始化时先获取窗体的宽度和高度,然后;
②遍历窗体控件进行初始化设置缩放位置;
③在窗体变化时获取当前窗体的宽度和高度,然后遍历窗体控件进行设置。
2.2、控件随窗体适配的核心代码
#region 控件大小随窗体大小等比例缩放
private readonly float x; //定义当前窗体的宽度
private readonly float y; //定义当前窗体的高度
private void setTag(Control cons)
{
foreach (Control con in cons.Controls)
{
con.Tag = con.Width + ";" + con.Height + ";" + con.Left + ";" + con.Top + ";" + con.Font.Size;
if (con.Controls.Count > 0) setTag(con);
}
}
private void setControls(float newx, float newy, Control cons)
{
//遍历窗体中的控件,重新设置控件的值
foreach (Control con in cons.Controls)
//获取控件的Tag属性值,并分割后存储字符串数组
if (con.Tag != null)
{
var mytag = con.Tag.ToString().Split(';');
//根据窗体缩放的比例确定控件的值
con.Width = Convert.ToInt32(Convert.ToSingle(mytag[0]) * newx); //宽度
con.Height = Convert.ToInt32(Convert.ToSingle(mytag[1]) * newy); //高度
con.Left = Convert.ToInt32(Convert.ToSingle(mytag[2]) * newx); //左边距
con.Top = Convert.ToInt32(Convert.ToSingle(mytag[3]) * newy); //顶边距
var currentSize = Convert.ToSingle(mytag[4]) * newy; //字体大小
if (currentSize > 0) con.Font = new Font(con.Font.Name, currentSize, con.Font.Style, con.Font.Unit);
con.Focus();
if (con.Controls.Count > 0) setControls(newx, newy, con);
}
}
/// <summary>
/// 重置窗体布局
/// </summary>
private void ReWinformLayout()
{
var newx = Width / x;
var newy = Height / y;
setControls(newx, newy, this);
}
#endregion
三、使用方法
3.1、在窗体构造函数内初始化适配
//注意:UIComponetForm是自己需进行适配的窗体名称
public UIComponetForm()
{
InitializeComponent();
#region 初始化控件缩放
x = Width;
y = Height;
setTag(this);
#endregion
}
3.2、重置缩放布局
文章来源:https://www.toymoban.com/news/detail-416157.html
private void UIComponetForm_Resize(object sender, EventArgs e)
{
//重置窗口布局
ReWinformLayout();
}
至此通过使用C#代码实现窗体控件适配(自适应窗体)布局下过完成,运行项目即可查看效果。文章来源地址https://www.toymoban.com/news/detail-416157.html
到了这里,关于Winform中实现窗体控件适配(自适应窗体)布局_通过C#代码方式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!