目录
C# 委托事件
读写ini配置文件
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.InteropServices;//add
namespace serDemo
{
class IniMgr
{
[DllImport("kernel32")]
private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);
[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);
private string _iniFilePath;
public string IniFilePath
{
get { return _iniFilePath; }
set { _iniFilePath = value; }
}
public void IniWriteValue(string field, string key, string val)
{
WritePrivateProfileString(field, key, val, _iniFilePath);
}
public string IniReadValue(string field, string key)
{
StringBuilder tmp = new StringBuilder(500);
int i = GetPrivateProfileString(field, key, "", tmp, 500, this._iniFilePath);
return tmp.ToString();
}
}
}
theIniMgr.IniFilePath = @"./cfg.ini";
string ret = theIniMgr.IniReadValue("CONN", "port");
Console.WriteLine(ret);
ret = theIniMgr.IniReadValue("CONN", "baud");
Console.WriteLine(ret);
//
theIniMgr.IniWriteValue("CONN", "port", "COM55");
https://blog.youkuaiyun.com/csdn_wuwt/article/details/89349947
压缩解压zip
Install-Package SharpZipLib
https://www.cnblogs.com/shushan/p/4828690.html
延时不阻塞UI
public static bool Delay_S(int delayTime)
{
Thread t = new Thread(o => Thread.Sleep(delayTime));
t.Start();
while (t.IsAlive)
{
Application.DoEvents();
}
/*
DateTime now = DateTime.Now;
int s;
do
{
TimeSpan spand = DateTime.Now - now;
s = spand.Seconds;
Application.DoEvents();
}
while (s < delayTime);
*/
return true;
}
子界面事件通知主界面处理事情
// 子界面代码
public delegate void updateParentData(object sender);
public event updateParentData sig_updateData;
private void LoadParam2Main (List<UC_ConsolePanle> lstCP) {
if (lstCP.Count <= 0) {
MessageBox.Show ("数据长度为空", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
for (int i = 0; i < lstCP.Count; i++) {
CDataTranf.tmpStepData[i].x = Convert.ToDouble (lstCP[i].ParamX);
CDataTranf.tmpStepData[i].t = Convert.ToDouble (lstCP[i].ParamT);
}
if (this.sig_updateData != null) {
sig_updateData (null);
}
}
// 主界面
private void btn_StepParamsCfg_Click_1(object sender, EventArgs e)
{
FrmConsoleCfg frm = new FrmConsoleCfg();
frm.sig_updateData += new FrmConsoleCfg.updateParentData(slot_UpdateParam);
frm.ShowDialog();
}
private void slot_UpdateParam (object sender)
{
uC_ConsolePanle_S1.ParamX = (float) CDataTranf.tmpStepData[0].x;
uC_ConsolePanle_S1.ParamT = (float) CDataTranf.tmpStepData[0].t;
uC_ConsolePanle_S2.ParamX = (float) CDataTranf.tmpStepData[1].x;
uC_ConsolePanle_S2.ParamT = (float) CDataTranf.tmpStepData[1].t;
uC_ConsolePanle_S3.ParamX = (float) CDataTranf.tmpStepData[2].x;
uC_ConsolePanle_S3.ParamT = (float) CDataTranf.tmpStepData[2].t;
uC_ConsolePanle_S4.ParamX = (float) CDataTranf.tmpStepData[3].x;
uC_ConsolePanle_S4.ParamT = (float) CDataTranf.tmpStepData[3].t;
uC_ConsolePanle_S5.ParamX = (float) CDataTranf.tmpStepData[4].x;
uC_ConsolePanle_S5.ParamT = (float) CDataTranf.tmpStepData[4].t;
uC_ConsolePanle_S6.ParamX = (float) CDataTranf.tmpStepData[5].x;
uC_ConsolePanle_S6.ParamT = (float) CDataTranf.tmpStepData[5].t;
uC_ConsolePanle_S7.ParamX = (float) CDataTranf.tmpStepData[6].x;
uC_ConsolePanle_S7.ParamT = (float) CDataTranf.tmpStepData[6].t;
MessageBox.Show ("参数加载完成", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
C# Winform界面美化
https://github.com/IgnaceMaes/MaterialSkin
线程中更新UI内容
this.Invoke(new EventHandler(delegate
{
button1.Text = System.DateTime.Now.ToShortDateString();
}));