У меня есть сетевое представление, которое мы будем называть dataGridViewExample.
Мой объект (необычные типы данных, потому что моя база данных SQLite):
class MyObject
{
public Int64 Vnr { get; set; }
public string Name { get; set; }
public Single Price { get; set; }
public int Amount { get; set; }
}
Вот соответствующий код:
//This form gets called with a .ShowDialog(); in my form1.
private List<MyObjecte> ExampleList = new List<MyObject>();
public MyForm()
{
dataGridViewExample.DataSource = OrdreInkøbsListe;
}
private void AddtoDataGridViewExample()
{
//Add a new MyObject to the list
ExampleList.Add(new myObject()
{
Vnr = newVnr,
Amount = newAmount,
Price = newPrice,
Name = newName
});
//refresh datasource
dataGridViewExample.DataSource = null;
dataGridViewExample.Refresh();
dataGridViewExample.DataSource = OrdreInkøbsListe;
ddataGridViewExample.Refresh();
}
Когда MyForm вызывается с .ShowDialog, он отображается нормально и показывает мой пример DataGridView очень хорошо. Как вы можете прочитать из кода, ExampleList
изначально пуст, поэтому он просто показывает пустое представление данных с 4 столбцами: Vnr, Name, Price & Amount. Если я щелкну внутри него и т. Д., Ничего не произойдет, поэтому пока все работает, как запланировано.
Каждый раз, когда я вызываю AddtoDataGridViewExample()
, он добавляет новый объект в Datagridview, и datagridview обновляется, перечисляя все добавленные объекты (они показывают себя в виде строк, опять же в соответствии с планом).
Теперь, помните, что я только что сказал, что ничего не произошло, если вы нажали внутри DataGridViewExample
до того, как я позвонил AddtoDataGridViewExample()
?
Что ж, после вызова AddtoDataGridViewExample()
один или несколько раз программа вылетит, если я нажму на DataGridViewExample
(например: пользователи хотят выбрать строку). Он выдает IndexOutOfRangeException и говорит об индексе -1.
Это также вызывает исключение в другой форме, в строке, где я вызываю MyForm с .ShowDialog()
;
Я действительно застрял в этом, ребята, вы понимаете, что не так ??
Моя единственная подсказка - , и я верю, что причиной проблемы может быть обновление источника данных DataGridViewExample
.
Еще одно важное примечание: я еще связал какие-либо события с моим DataGridViewExample
. Таким образом, вы можете исключить эту идею.
Вот все DataGridViewExample
свойства:
this.dataGridViewExample.AllowUserToAddRows = false;
this.dataGridViewExample.AllowUserToDeleteRows = false;
this.dataGridViewExample.AllowUserToResizeColumns = false;
this.dataGridViewExample.AllowUserToResizeRows = false;
this.dataGridViewExample.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill;
this.dataGridViewExample.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dataGridViewExample.Location = new System.Drawing.Point(591, 53);
this.dataGridViewExample.MultiSelect = false;
this.dataGridViewExample.Name = "dataGridViewExample";
this.dataGridViewExample.ReadOnly = true;
this.dataGridViewExample.RowHeadersVisible = false;
this.dataGridViewExample.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
this.dataGridViewExample.ShowEditingIcon = false;
this.dataGridViewExample.Size = new System.Drawing.Size(240, 150);
this.dataGridViewExample.TabIndex = 31;