2007-03-13 Carlos Alberto Cortez <calberto.cortez@gmail.com>
authorCarlos Alberto Cortez <calberto.cortez@gmail.com>
Tue, 13 Mar 2007 19:51:32 +0000 (19:51 -0000)
committerCarlos Alberto Cortez <calberto.cortez@gmail.com>
Tue, 13 Mar 2007 19:51:32 +0000 (19:51 -0000)
* ListView.cs: Implement ItemChecked 2.0 event. Also cast to
the correct handler in OnItemCheck method (ItemCheckEventHandler
instead of EventHandler). This used to throw an InvalidCastException.

svn path=/trunk/mcs/; revision=74201

mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog
mcs/class/Managed.Windows.Forms/System.Windows.Forms/ListView.cs

index 0ce6b8bcca8f69a7f8ed9466132dd37a8da97c3e..487058b5fc2ff6721c0dd7fdf159962fa701ab88 100644 (file)
@@ -1,3 +1,9 @@
+2007-03-13  Carlos Alberto Cortez <calberto.cortez@gmail.com>
+
+       * ListView.cs: Implement ItemChecked 2.0 event. Also cast to 
+       the correct handler in OnItemCheck method (ItemCheckEventHandler 
+       instead of EventHandler). This used to throw an InvalidCastException.
+
 2007-03-13  Jackson Harper  <jackson@ximian.com>
 
        * TextBoxBase.cs: Calculate the document before the handle is
index ba81a2c2a09941c4cb5bb1f2b756d4522ba87147..3d26cf9dc3de4df683dc183e304cdff2b750cf82 100644 (file)
@@ -120,6 +120,7 @@ namespace System.Windows.Forms
                static object ItemDragEvent = new object ();
                static object SelectedIndexChangedEvent = new object ();
 #if NET_2_0
+               static object ItemCheckedEvent = new object ();
                static object CacheVirtualItemsEvent = new object ();
                static object RetrieveVirtualItemEvent = new object ();
 #endif
@@ -156,6 +157,13 @@ namespace System.Windows.Forms
                        remove { Events.RemoveHandler (ItemCheckEvent, value); }
                }
 
+#if NET_2_0
+               public event ItemCheckedEventHandler ItemChecked {
+                       add { Events.AddHandler (ItemCheckedEvent, value); }
+                       remove { Events.RemoveHandler (ItemCheckedEvent, value); }
+               }
+#endif
+
                public event ItemDragEventHandler ItemDrag {
                        add { Events.AddHandler (ItemDragEvent, value); }
                        remove { Events.RemoveHandler (ItemDragEvent, value); }
@@ -1845,6 +1853,12 @@ namespace System.Windows.Forms
 
                                ItemCheckEventArgs ice = new ItemCheckEventArgs (item.Index, curr_state, new_state);
                                owner.OnItemCheck (ice);
+
+#if NET_2_0
+                               // ItemCheckedEvent goes after the checked state has changed
+                               ItemCheckedEventArgs icea = new ItemCheckedEventArgs (item);
+                               owner.OnItemChecked (icea);
+#endif
                        }
 
                        private void ItemsMouseDown (object sender, MouseEventArgs me)
@@ -2516,11 +2530,20 @@ namespace System.Windows.Forms
 
                protected virtual void OnItemCheck (ItemCheckEventArgs ice)
                {
-                       EventHandler eh = (EventHandler)(Events [ItemCheckEvent]);
+                       ItemCheckEventHandler eh = (ItemCheckEventHandler)(Events [ItemCheckEvent]);
                        if (eh != null)
                                eh (this, ice);
                }
 
+#if NET_2_0
+               protected virtual void OnItemChecked (ItemCheckedEventArgs icea)
+               {
+                       ItemCheckedEventHandler eh = (ItemCheckedEventHandler)(Events [ItemCheckedEvent]);
+                       if (eh != null)
+                               eh (this, icea);
+               }
+#endif
+
                protected virtual void OnItemDrag (ItemDragEventArgs e)
                {
                        EventHandler eh = (EventHandler)(Events [ItemDragEvent]);