CurrencyManager 防止在 DataGrid 中隐藏一行

CurrencyManager prevents hiding a row in a DataGrid

我不太清楚 Currencymanager 的用途。我没有明确实施它,但它阻止我在我的数据网格中隐藏行。

我从一个包含多个列的 csv 文件构建数据网格。其中之一包括双倍金额(价格)。

当我想将所有行的数量 lower/greater 设置为不可见时

public override void Execute(object o) {
    DataGridViewRow row = (DataGridViewRow)o;
    if ((string)Value == "off") row.Visible = false;                       
}

它告诉我喜欢

"Could not hide Rows bounded to the Currency Manager"

当我隐藏基于前字符串的另一列数据类型的行时,错误不会出现 - 仅当值为双精度时。

编辑:我通过捕捉 InvalidOperationException 并忽略它暂时解决了这个问题。它无论如何都会执行。但我认为这不是很好的方式 :S

我能以某种方式取消对货币经理的保证金吗?

这种方法非常慢(或者您可以检查 DataView 及其 RowFilter 属性),但解决问题的方法是获取 DataGridView 的货币管理器对象并在代码前后调用 SuspendBindingResumeBinding

CurrencyManager manager = (CurrencyManager)BindingContext[dataGridView1.DataSource];
manager.SuspendBinding();

//your code goes here
//....

manager.ResumeBinding();