DataGridView CellFormatting性能问题

X11

如何解决CellFormatting“慢速滚动”性能问题?

使用此代码将解密值从加密列复制到另一列:

private void grid_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
    if (e.ColumnIndex < 0 || e.RowIndex < 0)
        return;

    var columnB = grid.Columns[e.ColumnIndex];
    if (columnB.Name != "B")
        return;

    var value = grid.Rows[e.RowIndex].Cells["A"].Value;
    if (value == null || value == DBNull.Value)
        return;

    e.Value = Decrypt(value.ToString());
}
雷扎·阿盖伊

如果性能问题是由于Decrypt方法引起的,则应避免CellFormatting在事件文档的备注部分中提及的情况下使用它

CellFormatting事件在每次绘制每个单元格时发生,因此在处理此事件时应避免冗长的处理。

我可以使用哪种解决方案根据第一列为第二列提供价值?

您可以使用以下任一选项:

  1. 向中添加第二列,DataGridView并在for循环中提供该值。
  2. 将第二列添加到您的数据源(例如DataTable),并在for循环中提供该值。

例子

在下面的示例中,如果从数据库加载数据,则没有任何区别。但是为了提供一个最小的,完整的可验证示例,我创建了DataTable自己。在这两个示例LoadData方法中,均加载DataTable

private DataTable LoadData()
{
    var dt = new DataTable();
    dt.Columns.Add("ExistingColumn");
    dt.Rows.Add("x");
    dt.Rows.Add("y");
    dt.Rows.Add("z");
    return dt;
}

示例1-将列添加到DataGridView

var dt = LoadData();
dataGridView1.DataSource = dt;
//Add new column to DataGridView
var newColumn = new DataGridViewTextBoxColumn();
newColumn.HeaderText = "NewColumn";
newColumn.Name = "NewColumn";
dataGridView1.Columns.Add(newColumn);
//Copy Values
foreach (DataGridViewRow r in this.dataGridView1.Rows)
{
    if(!r.IsNewRow)
        r.Cells["NewColumn"].Value = Decrypt(r.Cells["ExistingColumn"].Value.ToString());
}

示例2-将列添加到DataTable

var dt = LoadData();
dataGridView1.DataSource = dt;
//Add new column to DataTable
dt.Columns.Add("NewColumn");
//Copy Values
foreach (DataRow r in dt.Rows)
    r["NewColumn"] = Decrypt(r.Field<string>("ExistingColumn");

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从datagridview单元格获取值放入小数的问题

来自分类Dev

DataGridView的CellPaintingEvent

来自分类Dev

如何对具有巨大行号的DataGridView进行分页以获得更好的性能

来自分类Dev

Datagridview格式列问题

来自分类Dev

您将在处理程序datagridView1_CellFormatting()中作为DataGridViewCellFormattingEventArgs传递什么?

来自分类Dev

发出使用DataTable DataSource更新排序的DataGridView上的行的问题

来自分类Dev

绑定的DataGridView不更新以显示信息+排序问题

来自分类Dev

C#如何从外部触发DataGridView CellFormatting事件?

来自分类Dev

包含MaskedTextBox的DataGridView单元中的焦点和双击问题

来自分类Dev

填充DataGridView

来自分类Dev

PowerShell-DataGridView Windows窗体拖放问题

来自分类Dev

在DataGridView的现有项目中添加数量的问题-vb.net

来自分类Dev

Datagridview更新

来自分类Dev

DataGridView列问题

来自分类Dev

奇怪的DataGridView问题

来自分类Dev

在vb.net上保存日期值时,从DataGridView保存到文本文件问题

来自分类Dev

Datagridview日期格式问题

来自分类Dev

datagridview问题

来自分类Dev

C#EF6问题将Linq结果绑定到日期列为null的DataGridView

来自分类Dev

将aa List <>绑定到DataGridView的问题

来自分类Dev

从DataSet问题填充DataGridView

来自分类Dev

从DataGridView计算

来自分类Dev

DataGridView RowFilter的double和CurrentCultureInfo问题

来自分类Dev

性能问题

来自分类Dev

更改 dataGridView_CellFormatting 上单元格的文本

来自分类Dev

datagridview winforms 的打印问题

来自分类Dev

DataGridView MouseWheel sendkeys updown 问题

来自分类Dev

Datagridview 全选

来自分类Dev

C#中DataGridView的SQL数据更新问题

Related 相关文章

热门标签

归档