2006-05-15 Atsushi Enomoto <atsushi@ximian.com>
[mono.git] / mcs / class / Managed.Windows.Forms / System.Windows.Forms / CurrencyManager.cs
index 0f68db0d6beaf8e53c2b64a67b88c7b6c30cefbe..2479e7a739b37ebdef6c8f50277e50bc8a5e06fc 100644 (file)
@@ -78,6 +78,7 @@ namespace System.Windows.Forms {
 
                        if (table != null) {
                                list = new DataView (table);
+                               ((DataView) list).ListChanged += new ListChangedEventHandler (ListChangedHandler);
                                table.Columns.CollectionChanged  += new CollectionChangeEventHandler (MetaDataChangedHandler);
                                table.ChildRelations.CollectionChanged  += new CollectionChangeEventHandler (MetaDataChangedHandler);
                                table.ParentRelations.CollectionChanged  += new CollectionChangeEventHandler (MetaDataChangedHandler);
@@ -91,6 +92,8 @@ namespace System.Windows.Forms {
 
                public override object Current {
                        get {
+                               if (list.Count == 0)
+                                       return null;
                                return list [listposition];
                        }
                }
@@ -261,7 +264,6 @@ namespace System.Windows.Forms {
                        return String.Empty;
                }
 
-               [MonoTODO ("Not totally sure how this works, its doesn't seemt to do a pull/push like i originally assumed")]
                protected override void UpdateIsBinding ()
                {
                        UpdateItem ();
@@ -294,6 +296,12 @@ namespace System.Windows.Forms {
                                MetaDataChanged (this, EventArgs.Empty);
                }
 
+               private void ListChangedHandler (object sender, ListChangedEventArgs e)
+               {
+                       OnItemChanged (new ItemChangedEventArgs (-1));  
+                       UpdateIsBinding ();
+               }
+
                public event ItemChangedEventHandler ItemChanged;
                public event EventHandler MetaDataChanged;
        }