读取CSV文件,包含题头的数据表格,显示到WinForm。 使用了锐视SeeSharp工具包。
一开始打算自己干写,觉得这个链接文章有用:
https://www.cnblogs.com/lcidy/p/9700187.html
后来看了简仪SeeSharp Tools的范例,问了LJY,有我需要的API,就成了这样:
//引用段
using SeeSharpTools.JY.File;
...
//方法定义变量
string[,] data= null;
//方法里面的调用
data= CsvHandler.Read<string>(文件路径名,(long) 0,0,-1,-1,Encoding.UTF8);
//CsvHandler.Read有多个数据类型和调用定义的重载,可根据需要自取; 我用了编码定义, 避免中文乱码
较完整参考:
https://blog.csdn.net/angel20082008/article/details/51718676
我的任务比较简单:
//读入栏头,用循环加入列:
dataGridViewWavSpec.Columns.Add()
//or 你知道要多少列
dataGridViewIDResults.ColumnCount = 要几列写多少;
//*********************
//加完头,逐行加内容:
dataGridViewWavSpec.Rows.Add();
//写个循环,变量k,逐个加这行的各列内容:
dataGridViewWavSpec.Rows[行号].Cells[k].Value = 表格数据
详细参考,一个递归算法
https://www.cnblogs.com/fuqiang88/p/7866458.html
我简单, 就读取一个目录里面所有的csv,可以:
//引用
using System.IO;
//正文代码
DirectoryInfo fdir = new DirectoryInfo(_pathOfSpecs);
FileInfo[] files = fdir.GetFiles("*.csv");
https://www.cnblogs.com/tommy-huang/p/4539999.html
Form1 form1 = new Form1();
form1.Show(); //并行运行
//或者
form1.ShowDialog(); //阻塞运行, 退出form1才能继续
if (File.Exists("full file name"))
本来想用OpenFileDialog去掉文件选择检查就可以, 但是发现必须填写一个文件名,让用户迷惑。 用了FolderBrowserDialog, 但是看不到桌面shortcut了,不爽。 检查了一些论坛, 最后发现, 微软就是推荐这个不方便的FolderBrowserDialog。
https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.openfiledialog?view=netframework-4.7.2
FolderBrowserDialog dialog = new FolderBrowserDialog();
dialog.Description = "请选择你需要的文件夹";
if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
//在这里干活
}
后台计算的时候界面线程是锁死的,直接写控件属性不行,得用跨线程调用技术。 详细:
https://www.cnblogs.com/TankXiao/p/3348292.html#delegateinvoke
推荐比较标准的BackgroundWorker,如果简单使用的话推荐第二种办法(delegate Invoke)
我看不懂,请教简仪LJW,得到一行金代码:
//前面要显示进度条
progressBar.Visible = true;
//进入循环,金光代码:
Invoke(new Action(() => { progressBar.Value = 100 * i / (循环长度 - 1); }));
//出了循环隐藏进度条,不然进度条有动画呼吸效果,太扎眼
progressBar.Visible = false;
实际上这个写法就是前面链接帖子的方法2,只是更容易看。
软件里面连续处理一堆数据文件,导致GUI锁死,采用backgroundWorker解决:
背景知识:
https://www.cnblogs.com/sparkdev/p/5906272.html
补充,关闭窗体时如果backgroundWorker在跑,要拦截事件:
https://stackoverflow.com/questions/1731384/how-to-stop-backgroundworker-on-forms-closing-event
主要工作:
backgroundWorker1.RunWorkerAsync();