2006-11-09 Mike Kestner <mkestner@novell.com>
[mono.git] / mcs / class / Managed.Windows.Forms / System.Windows.Forms / ListView.cs
index bd5a8d714582ce84610dd2ca5fc23700ba857d13..31888daa1bd97fb181e801b32f563299fb8cccbf 100644 (file)
@@ -663,6 +663,12 @@ namespace System.Windows.Forms
                        }
                }
                
+               internal void OnSelectedIndexChanged ()
+               {
+                       if (IsHandleCreated)
+                               OnSelectedIndexChanged (EventArgs.Empty);
+               }
+
                internal int TotalWidth {
                        get { return Math.Max (this.Width, this.layout_wd); }
                }
@@ -1941,7 +1947,7 @@ namespace System.Windows.Forms
                protected override void CreateHandle ()
                {
                        base.CreateHandle ();
-                       if (SelectedItems.Count > 0)
+                       for (int i = 0; i < SelectedItems.Count; i++)
                                OnSelectedIndexChanged (EventArgs.Empty);
                }
 
@@ -3079,18 +3085,24 @@ namespace System.Windows.Forms
                                if (!list.Contains (item))
                                        return;
                                        
+                               bool selection_changed = owner.SelectedItems.Contains (item);
                                list.Remove (item);
                                OnChange ();
                                owner.Redraw (true);                            
+                               if (selection_changed)
+                                       owner.OnSelectedIndexChanged (EventArgs.Empty);
                        }
 
                        public virtual void RemoveAt (int index)
                        {
                                if (index < 0 || index >= Count)
                                        throw new ArgumentOutOfRangeException ("index");
+                               bool selection_changed = owner.SelectedIndices.Contains (index);
                                list.RemoveAt (index);
                                OnChange ();
                                owner.Redraw (false);
+                               if (selection_changed)
+                                       owner.OnSelectedIndexChanged (EventArgs.Empty);
                        }
                        #endregion      // Public Methods