嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 3 元微信扫码支付:3 元
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
1. 示例源码详细说明了窗体大小所有控件自适应变化
2. 关于窗体基本控制的INI读取与写入,程序有详细说明
全屏演示
缩小演示
string IP;
string Port;
string Speed;
int Test;
string Check;
string combox;
//声明默认配置文件路径
public string INIPath = Convert.ToString(System.AppDomain.CurrentDomain.BaseDirectory) "Config.ini";
#region 开机启动时对所有数据INI的读入
private void Form1_Load(object sender, EventArgs e)
{
//控件大小等比例放大 第三步
ChangeFormSize();//设置变化窗体大小
//设置焦点,不让输入框一打开就聚焦
this.ActiveControl = this.label1;
//对TextBox非字符串类型的INI读测试
//对FilesINI类对象重建
FilesINI ConfigINI = new FilesINI();
//读取INI方法
IP = ConfigINI.INIRead("Fanuc机器人控制参数", "IP", INIPath);
Port = ConfigINI.INIRead("Fanuc机器人控制参数", "Port", INIPath);
Speed = ConfigINI.INIRead("Fanuc机器人控制参数", "Speed", INIPath);
txt_Ip.Text = IP;
txt_Port.Text = Port.ToString();
txt_Speed.Text = Speed.ToString();
// 对非字符串类型的INI读测试 : 如果传来的数据类型为int,即非字符串类型,请先进行转换
string test = Test.ToString();
test= ConfigINI.INIRead("测试参数", "test", INIPath);
txt_Test.Text= test;
// 对checkBox1运行实时状态的INI读测试:
Check = ConfigINI.INIRead("运行状态", "Check", INIPath);
this.checkBox1.Text = Check;
// 对omboBox的INI读测试
combox = ConfigINI.INIRead("多选数据项", "combox", INIPath);
this.comboBox1.Text = combox;
}
#endregion
#region 对TextBox 为字符串与非字符串类型的INI写测试:
//在窗口程序右边添加:相应组件的TextChanged事件 方法: 在相应组件(如 textBox)中的“闪电键”-事件项:属性栏中----双击TextChanged
private void txt_Ip_TextChanged(object sender, EventArgs e)
{
FilesINI ConfigINI = new FilesINI();
ConfigINI.INIWrite("Fanuc机器人控制参数", "IP", txt_Ip.Text, INIPath);
}
private void txt_Port_TextChanged(object sender, EventArgs e)
{
FilesINI ConfigINI = new FilesINI();
ConfigINI.INIWrite("Fanuc机器人控制参数", "Port", txt_Port.Text, INIPath);
}
private void txt_Speed_TextChanged(object sender, EventArgs e)
{
FilesINI ConfigINI = new FilesINI();
ConfigINI.INIWrite("Fanuc机器人控制参数", "Speed", txt_Speed.Text, INIPath);
}
private void txt_Test_TextChanged(object sender, EventArgs e)
{
FilesINI ConfigINI = new FilesINI();
ConfigINI.INIWrite("测试参数", "test", txt_Test.Text, INIPath);
}
#endregion
#region 对checkBox1运行实时状态的INI写测试:
//在窗口程序右边添加:相应组件的CheckStateChanged事件 方法: 在相应组件(如 textBox)中的“闪电键”-事件项:杂项栏中----双击CheckStateChanged
private void checkBox1_CheckStateChanged(object sender, EventArgs e)
{
FilesINI ConfigINI = new FilesINI();
ConfigINI.INIWrite("运行状态", "Check", checkBox1.Text, INIPath);
}
//在窗口程序右边添加:相应组件的CheckedChanged事件 方法: 在相应组件(如 textBox)中的“闪电键”-事件项:杂项栏中----双击CheckedChanged
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
if (checkBox1.Checked)
{
checkBox1.Text = "打开";
}
else
{
checkBox1.Text = "关闭";
}
}
private void timer1_Tick(object sender, EventArgs e)
{
if (checkBox1.Text == "打开")
{
checkBox1.Checked = true;
return;
}
}
#endregion
#region 对comboBox运行实时状态的INI写测试:
// 在窗口程序右边添加:相应组件的SelectedIndexChanged事件 方法: 在相应组件(如 comboBox1)中的“闪电键”-行为项中的----双击SelectedIndexChanged
private void comboBox1_SelectedIndexChanged_1(object sender, EventArgs e)
{
FilesINI ConfigINI = new FilesINI();
ConfigINI.INIWrite("多选数据项", "combox", comboBox1.Text, INIPath);
}
#endregion
#region 这是控件大小等比例放大的第一步代码:后期可以直接复制使用 这是第一步 ,后面紧跟第二步可完成
/// <summary>
/// 当前窗体宽度
/// </summary>
private float CurrentWidth { get; set; }
/// <summary>
/// 当前窗体高度
/// </summary>
private float CurrentHeight { get; set; }
/// <summary>
/// 改变窗体大小
/// </summary>
private void ChangeFormSize()
{
SetStyle(ControlStyles.UserPaint, true);
SetStyle(ControlStyles.AllPaintingInWmPaint, true); // 禁止擦除背景.
//SetStyle(ControlStyles.OptimizedDoubleBuffer, true); // 双缓冲DoubleBuffer
CurrentWidth = this.Width;
CurrentHeight = this.Height;
SetControTag(this);
}
/// <summary>
/// 设置控件 Tag 数据
/// </summary>
/// <param name="cons"></param>
private void SetControTag(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)
{
SetControTag(con);
}
}
}
/// <summary>
/// 设置控件双缓冲区
/// </summary>
/// <param name="cc"></param>
public static void SetControlDoubleBuffer(Control cc)
{
cc.GetType().GetProperty("DoubleBuffered", System.Reflection.BindingFlags.Instance |
System.Reflection.BindingFlags.NonPublic).SetValue(cc, true, null);
}
/// <summary>
/// 更新控件的大小
/// </summary>
/// <param name="WidthChangeProportion"></param>
/// <param name="HeightChangeProportion"></param>
/// <param name="cons"></param>
private void UpdateControlsSize(float WidthChangeProportion, float HeightChangeProportion, Control cons)
{
//遍历窗体中的控件,重新设置控件的值
foreach (Control con in cons.Controls)
{
//获取控件的Tag属性值,并分割后存储字符串数组
SetControlDoubleBuffer(this);
SetControlDoubleBuffer(con);
if (con.Tag != null)
{
string[] mytag = con.Tag.ToString().Split(new char[] { ';' });
//根据窗体缩放的比例确定控件的值
con.Width = Convert.ToInt32(System.Convert.ToSingle(mytag[0]) * WidthChangeProportion);//宽度
con.Height = Convert.ToInt32(System.Convert.ToSingle(mytag[1]) * HeightChangeProportion);//高度
con.Left = Convert.ToInt32(System.Convert.ToSingle(mytag[2]) * WidthChangeProportion);//左边距
con.Top = Convert.ToInt32(System.Convert.ToSingle(mytag[3]) * HeightChangeProportion);//顶边距
Single currentSize = System.Convert.ToSingle(mytag[4]) * HeightChangeProportion;//字体大小
con.Font = new Font(con.Font.Name, currentSize, con.Font.Style, con.Font.Unit);
if (con.Controls.Count > 0)
{
UpdateControlsSize(HeightChangeProportion, HeightChangeProportion, con);
}
}
}
}
#endregion
#region 这是控件大小等比例放大的第二步 : 需要选中窗体---属性---布局Resize项--双击激发事件
private void Form1_Resize(object sender, EventArgs e)
{
float WidthChangeProportion = (this.Width) / CurrentWidth;//宽度变化比例
float HeightChangeProportion = (this.Height) / CurrentHeight;//高度变化比例
UpdateControlsSize(WidthChangeProportion, HeightChangeProportion, this);
}
#endregion
#region 在winform中,实现点击空白处失去焦点的方法
private void Form1_Click(object sender, EventArgs e)
{
label1.Select(); //label1的visible属性设为false
}
#endregion