C# 过滤databound datagridview的dataview(带有combobox列)使其速度非常慢

C# 过滤databound datagridview的dataview(带有combobox列)使其速度非常慢,c#,winforms,datagridview,C#,Winforms,Datagridview,我所面临的问题听起来像是同一个问题,然而,这里描述的解决方法对我来说并不适用(除非我误解了它) 我有一个DataGridView,它绑定到DataTable,还有组合框列(根据上面链接中的用户,这很重要)。我试图根据一个单独的组合框来过滤这个DataGridView,但一旦我这样做,它就会变得慢得令人无法接受 目前,我的组合框中只有以下内容更改事件: private void cmbFilter_SelectedIndexChanged(object sender, EventArgs e) {

我所面临的问题听起来像是同一个问题,然而,这里描述的解决方法对我来说并不适用(除非我误解了它)

我有一个
DataGridView
,它绑定到
DataTable
,还有
组合框
列(根据上面链接中的用户,这很重要)。我试图根据一个单独的组合框来过滤这个
DataGridView
,但一旦我这样做,它就会变得慢得令人无法接受

目前,我的
组合框中只有以下内容
更改事件:

private void cmbFilter_SelectedIndexChanged(object sender, EventArgs e)
{
    (dgvVolReport.DataSource as DataTable).DefaultView.RowFilter = string.Empty;
}
所以我甚至没有过滤,甚至只是将
.RowFilter
设置为
字符串。空的
会使它变慢

有人知道这方面的情况吗?如何修复或解决


更新:奇怪的是,如果我说这句话:

((DataTable)((DataGridView)sender).DataSource).DefaultView.RowFilter = string.Empty;

在我的
CellEndEdit
事件中,只要
组合框
SelectedIndexChanged
中的那一行不存在,它就不会使其变慢。因此,似乎是外部
组合框
影响了性能。可能它触发得太频繁了?

如果您有太多的行供UI循环,则列自动调整可能会减慢您的速度。如果有以下设置(以编程方式或在属性中),则可能需要更改设置。不要尝试。如果速度很快,请将其设置为使用标题或仅使用可见单元格

detailsDataGridView.AutoSizeColumnsMode = 
        DataGridViewAutoSizeColumnsMode.AllCells;
不过,我不确定这对你有什么影响。似乎SelectedIndexChanged调用得太频繁了。如果在设置
数据源
后设置了
DisplayMember
ValueMember
,则可能会发生这种情况,因为它将调用SelectedIndexChanged事件,然后再次遍历整个表


您还可以使用
组合框。SelectionChangeCommitted
事件,它对数据绑定等您可能不希望触发事件的事情不太敏感。

组合框。SelectionChangeCommitted
似乎解决了这个问题!谢谢