2006-11-09 Mike Kestner <mkestner@novell.com>
[mono.git] / mcs / class / Managed.Windows.Forms / System.Windows.Forms / ListView.cs
index a925f00a3f8e0d51577260cf3fa0c2cf5e105145..31888daa1bd97fb181e801b32f563299fb8cccbf 100644 (file)
@@ -147,10 +147,10 @@ namespace System.Windows.Forms
                        item_control = new ItemControl (this);
                        Controls.AddImplicit (item_control);
 
-                       h_scroll = new HScrollBar ();
+                       h_scroll = new ImplicitHScrollBar ();
                        Controls.AddImplicit (this.h_scroll);
 
-                       v_scroll = new VScrollBar ();
+                       v_scroll = new ImplicitVScrollBar ();
                        Controls.AddImplicit (this.v_scroll);
 
                        h_marker = v_marker = 0;
@@ -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,6 +1947,8 @@ namespace System.Windows.Forms
                protected override void CreateHandle ()
                {
                        base.CreateHandle ();
+                       for (int i = 0; i < SelectedItems.Count; i++)
+                               OnSelectedIndexChanged (EventArgs.Empty);
                }
 
                protected override void Dispose (bool disposing)
@@ -3077,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