ListviewEx, 和listViewHelper
前者是控件,后者是它的帮助类。通过帮助类,可以非常 简单的操作dataGridView控件或者本文讲的dataGridViewEx控件。
代码中的初始化,意义如下:
添加或者删除数据,仅仅是操作listViewHelper类内部维护的内存表
set.appendRowData(dgvHlper.DgvDataTableName, obj);
导出数据也是操作的内存表
dgvHlper.DgvSet.dtWrite(dgvHlper.DgvSet.getTableNames()[0], "D:\\t1.csv");
演示程序运行界面如下:
可以看到显示内容做了飘红处理,这是因为listViewHelper初始化时做了数据上限下限的设定。
dgvHlper = new dataGridViewHelper(this.dataGridViewEx1); dgvHlper.DataUpLimit = 1; dgvHlper.DataDnLimit = 0.1f;
源码如下:
namespace WindowsFormsApp1 { public partial class Form1 : Form { dataGridViewHelper dgvHlper = null; /// <summary> /// 数据文件字段名列表,用于CSV报表以及数据列表的显示 /// </summary> public const string workDataFieldNames = "产品SN,视觉检测结果,工位,生产数据,记录时间"; /// <summary> /// 字段名对应数据类型,用于CSV报表以及数据列表的显示 /// </summary> public const string workDataFieldDataType = "string,string,string,string,string"; public Form1() { InitializeComponent(); dgvHlper = new dataGridViewHelper(this.dataGridViewEx1); dgvHlper.DataUpLimit = 1; dgvHlper.DataDnLimit = 0.1f; } private void initView(dataGridViewEx dview, string f, string arg1, string arg2) { if (dview.InvokeRequired) { Action<dataGridViewEx, string, string, string> act = initView; dview.Invoke(act, new object[] { dview, f, arg1, arg2 }); } else { dgvHlper.Init(f, arg1, arg2); } } private void addOneRowData(dataGridViewEx grid, List<object> obj) { if (grid.InvokeRequired) { Action<dataGridViewEx, List<object>> act = addOneRowData; grid.Invoke(act, new object[] { grid, obj }); } else { try { var set = dgvHlper.DgvSet; set.appendRowData(dgvHlper.DgvDataTableName, obj); this.dataGridViewEx1.Update(); } catch (Exception ex) { MessageBox.Show(ex.Message); } } } private void 初始化表ToolStripMenuItem_Click(object sender, EventArgs e) { initView(this.dataGridViewEx1, workDataFieldNames, workDataFieldDataType, workDataFieldNames); } private void dataGridViewEx1_RowStateChanged(object sender, DataGridViewRowStateChangedEventArgs e) { e.Row.HeaderCell.Value = string.Format("{0}", e.Row.Index + 1); } int j1 = 0; private void 添加一行数据ToolStripMenuItem_Click(object sender, EventArgs e) { var obj = new List<object>(); ++j1; //产品SN,视觉检测结果,工位,生产数据,记录时间 obj.Add($"SN00{j1}"); obj.Add("OK"); obj.Add("1"); obj.Add("23.325"); obj.Add(DateTime.Now.ToString()); addOneRowData(this.dataGridViewEx1, obj); } private void 导出数据ToolStripMenuItem_Click(object sender, EventArgs e) { dgvHlper.DgvSet.dtWrite(dgvHlper.DgvSet.getTableNames()[0], "D:\\t1.csv"); } private void 删除指定行数据ToolStripMenuItem_Click(object sender, EventArgs e) { var tabName = dgvHlper.DgvSet.getTableNames()[0]; dgvHlper.DgvSet.delRow(tabName,0); } } }
本文的视频讲解如下:
之前写了一篇此控件的使用介绍,如下:
http://www.skcircle.com/?id=536
大家可以对照着参考。
本站收费下载:
扫码收费1元,勇哥用以支付本站服务器费用。
---------------------
作者:hackpig
来源:www.skcircle.com
版权声明:本文为博主原创文章,转载请附上博文链接!

