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
版权声明:本文为博主原创文章,转载请附上博文链接!


少有人走的路



















