+2008-11-18 Jonathan Pobst <monkey@jpobst.com>
+
+ * DataGridViewColumnCollection.cs: Make sure we re-index the columns after
+ the collection is modified.
+
2008-11-17 Jonathan Pobst <monkey@jpobst.com>
* DomainUpDown.cs: Remove string cache and reflection optimizations. They
protected virtual void OnCollectionChanged (CollectionChangeEventArgs e)
{
+ RegenerateIndexes ();
RegenerateSortedList ();
if (CollectionChanged != null)
get { return display_index_sorted; }
}
+ private void RegenerateIndexes ()
+ {
+ for (int i = 0; i < Count; i++)
+ this[i].SetIndex (i);
+ }
+
internal void RegenerateSortedList ()
{
DataGridViewColumn[] array = (DataGridViewColumn[])base.List.ToArray (typeof (DataGridViewColumn));
+2008-11-18 Jonathan Pobst <monkey@jpobst.com>
+
+ * DataGridViewColumnCollectionTest.cs: Add test to ensure we re-index
+ columns after modifying the collection.
+
2008-11-17 Jonathan Pobst <monkey@jpobst.com>
* DataGridViewTest.cs: Add a test showing how RowTemplate works.
Assert.AreEqual (100, col.Width, "#A col.Width");
}
+
+ [Test]
+ public void IndexUpdatedOnColumnCollectionChange ()
+ {
+ DataGridView dgv = new DataGridView ();
+
+ Form f = new Form ();
+ f.Controls.Add (dgv);
+ f.Show ();
+
+ dgv.Columns.Add ("A1", "A1");
+ Assert.AreEqual (0, dgv.Columns[0].Index, "A1");
+
+ dgv.Columns.Add ("A2", "A2");
+ Assert.AreEqual (0, dgv.Columns[0].Index, "A2");
+ Assert.AreEqual (1, dgv.Columns[1].Index, "A3");
+
+ dgv.Columns.Insert (0, new DataGridViewTextBoxColumn ());
+ Assert.AreEqual (0, dgv.Columns[0].Index, "A4");
+ Assert.AreEqual (1, dgv.Columns[1].Index, "A5");
+ Assert.AreEqual (2, dgv.Columns[2].Index, "A6");
+
+ dgv.Columns.RemoveAt (1);
+ Assert.AreEqual (0, dgv.Columns[0].Index, "A7");
+ Assert.AreEqual (1, dgv.Columns[1].Index, "A8");
+
+ dgv.Columns.RemoveAt (0);
+ Assert.AreEqual (0, dgv.Columns[0].Index, "A9");
+
+ f.Close ();
+ f.Dispose ();
+ }
}
}
#endif
\ No newline at end of file