在好例子网,分享、交流、成长!
您当前所在位置:首页C# 开发实例C#数据库操作 → C#INI读取写入 + 窗体自适应大小 变化

C#INI读取写入 + 窗体自适应大小 变化

C#数据库操作

下载此实例
  • 开发语言:C#
  • 实例大小:0.09M
  • 下载次数:30
  • 浏览次数:247
  • 发布时间:2024-10-25
  • 实例类别:C#数据库操作
  • 发 布 人:laser88
  • 文件格式:.zip
  • 所需积分:3

实例介绍

【实例简介】1. 示例源码详细说明了窗体大小所有控件自适应变化

                    2. 关于窗体基本控制的INI读取与写入,程序有详细说明

【实例截图】

全屏演示

from clipboard

缩小演示

from clipboard

【核心代码】

 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



实例下载地址

C#INI读取写入 + 窗体自适应大小 变化

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警