CurrencyManager 看了MSDN之后作了一些练习但还是不能深入体会,请高手们多多指教有什么好的资料?

解决方案 »

  1.   

    CurrencyManager 基本 
    是什么:
    Windows 窗体控件绑定到的任何数据源将都具有一个关联的 CurrencyManager 对象。
    作用:CurrencyManager 对象跟踪位置,另外监控对该数据源的绑定。
    注意:
    对于当前绑定到的每个离散数据源,在窗体上都有一个 CurrencyManager 对象。如果窗体上的所有控件都绑定到一个源(例如,如果几个 TextBox 控件绑定到同一数据表),那么它们将共享同一个 CurrencyManager。
    但是,有时窗体上的控件将绑定到不同的源。在这种情况下,窗体上有多个 CurrencyManager 对象,每个都跟踪控件正在使用哪个记录(Position属性)或数据元素。(Item_Change事件)获取:
    每个 Windows 窗体都有一个 BindingContext 对象。BindingContext 对象跟踪窗体上的所有 CurrencyManager 对象。因此,任何具有数据绑定控件的 Windows 窗体都至少有一个跟踪一个(或多个)CurrencyManager 对象的 BindingContext 对象,而每个 CurrencyManager 对象又跟踪一个数据源。如果使用容器控件,如 GroupBox、Panel 或 TabControl 来包含数据绑定控件,则可以只为该容器控件及其控件创建一个 BindingContext。这使窗体的各个部分都由它自己的 CurrencyManager 对象来管理。有关为同一数据源创建多个 CurrencyManager 对象的更多详细信息,请参见 BindingContext 构造函数。例子:
    comboBox1.DataSource = DataSet1;
    comboBox1.DisplayMember = "Customers.FirstName";
    this.BindingContext[dataSet1, "Customers"].Position = 1;另外,如果用一个DataSet帮定到一个DataView,而控件绑定到DataView而非DataSet。这个时候DataSet和DataView将产生2个不同的CurrencyManager。
     Surance Yin@ Surance Center 
    转载请注明出处 
      

  2.   

    有点乱方式1:comboBox1.DataSource = DataSet1;
    comboBox1.DisplayMember = "Customers.FirstName";
    方式2:comboBox2.DataSource = DataSet1.Tables["Customers"];
    comboBox2.DisplayMember = "FirstName";
    这时, comboBox1 和 comboBox2 有各自的 BindingContext, 也就有自己的 CurrencyManager,
    虽然数据源都是来自 Dataset1, 但是 Current Location 是独立的,
    选择一个不会影响另一个.但是如果 combobox1 和 combobox2 都使用相同的绑定方式, 那么将使用一个 CurrencyManager(还要看combobox放置的位置是否会导致bindingcontext不同?),
    所以选择一个, 另外一个的选中值也跟着改变了.