日期:2014-05-18  浏览次数:20997 次

CurrencyManager.Current问题
C# code

CurrencyManager cm = this.BindingContext[dataset, "tablename"] as CurrencyManager;
                    DataRowView drv = cm.Current as DataRowView;
                    if (drv != null)
                    {
                        drv.Delete();
                    }


如果drv是datarow类型的那么就取不到当前行 cm.Current 是obj类型的为什么强制转换成datarow就不行 转换成DataRowView 就好用呢

求解

------解决方案--------------------
msdn 上写的很清楚

使用 BindingManagerBase,可以对 Windows 窗体上绑定到相同数据源的数据绑定控件进行同步。(有关将控件简单绑定到数据源的更多信息,请参见 Binding 类。)例如,假定窗体包含两个绑定到相同数据源的不同列的 TextBox 控件。数据源可能是一个包含客户姓名的 DataTable,其中的列可能包含名字和姓氏。这两个控件必须同步以便一起显示同一客户的正确姓名。从 BindingManagerBase 类继承的 CurrencyManager 通过维护指向数据源中当前项的指针来完成此同步。TextBox 控件被绑定到当前项,因此它们显示同一行的信息。在当前项更改时,CurrencyManager 通知所有绑定控件,以便它们能够刷新它们的数据。此外,可以设置 Position 属性来指定控件所指向的 DataTable 中的行。若要确定数据源中存在的行数,请使用 Count 属性。