Итак, я пытаюсь клонировать мой ListView
, так что я получаю новый ListView
со свойствами старого, но без элементов старого (в то время как исключая любые ссылки назад к старой).Странное поведение после чтения свойств ListView
private ListView generateEmptyClone(ListView toClone)
{
ListView newCopy = new ListView();
foreach (var propToClone in toClone.GetType().GetProperties(BindingFlags.Instance | BindingFlags.Public))
{
PropertyInfo propInfo = newCopy.GetType().GetProperty(propToClone.Name);
if (propInfo.CanWrite && propInfo.Name != "TopItem") // TopItem causing problems
propInfo.SetValue(newCopy, propToClone.GetValue(toClone, null));
}
foreach (ColumnHeader head in toClone.Columns)
{
newCopy.Columns.Add((ColumnHeader)head.Clone());
}
return newCopy;
}
Описанный выше метод отлично работает, но когда я возвращаюсь к первоначальному ListView
и выполнить:
string[] customerToAdd = { "To IBT", customerName, contactNum, date, SKU, itemDescription,
emp, emp, emp, emp, emp};
var listViewItem = new ListViewItem(customerToAdd);
listViewItem.Font = new Font(listViewItem.Font, FontStyle.Regular);
TableDisplay.Items.Insert(0, listViewItem);
Я получаю ошибку:
Exception:Thrown: "InvalidArgument=Value of '-1' is not valid for 'index'." (System.ArgumentOutOfRangeException) A System.ArgumentOutOfRangeException was thrown: "InvalidArgument=Value of '-1' is not valid for 'index'."
Так что я создал метод сравнить свойства оригинала ListView
до и после того, как я скопировал его свойства, и единственными отличиями были то, что CanSelect
, Created
и Visible
изменились с True на False.
Любые идеи, почему он ведет себя таким образом?
Можете ли вы предоставить код, используемый для создания 'myListViewItem'? – jaredbaszler
@jaredbaszler Я внесла поправки в сообщение – galacticfan
Я здесь ничего не вижу. Возможно, проверьте, что у вас одинаковое количество столбцов в списке, которые вы клонируете после клонирования. Кроме того, -1 обычно возвращается какой-то функцией поиска, когда он ничего не может найти. Например, если вы ищете ListBox или массив для элемента, и он не находит его. Если вы что-то находите, а затем пытаетесь вставить его в индекс -1, который не будет работать. Проверьте свои индексы и убедитесь, что все они действительны. Это довольно легко отлаживать. – jaredbaszler