У меня есть DataGridView, к которому я добавляю DataGridViewComboBoxColumn, добавляю значения и устанавливаю значение, перебирая строки сетки. Выбранное значение является значением из другой ячейки строки. Это очень медленно, и я не уверен, использую ли я передовой опыт или нет. Для сетки с 3000 строк это занимает более двух минут. Я попытался выполнить итерацию по количеству строк и использовать цикл foreach (в приведенном ниже коде с комментариями) с теми же результатами. Есть ли более быстрый способ сделать это? Вот мой код:
DataGridViewComboBoxColumn cmb = new DataGridViewComboBoxColumn();
cmb.HeaderText = "New Class";
cmb.Name = "cmb";
foreach (DataGridViewRow row in dgClasses.Rows)
{
if (row.Cells[0].Value != null)
{
cmb.Items.Add(row.Cells[0].Value);
}
}
dgProducts.Columns.Add(cmb);
for (int i = 0; i < dgProducts.Rows.Count; i++)
{
dgProducts.Rows[i].Cells["cmb"].Value = dgProducts.Rows[i].Cells["Class"].Value;
}
//foreach (DataGridViewRow row in dgProducts.Rows)
//{
// row.Cells["cmb"].Value = row.Cells["Class"].Value;
//}
List<Products>
только с одним свойством, которое содержит строки{ "Class1", "Class2", ..., "Class20" }
, а DataSource dgProducts — этоList<Classes>
, который содержит то же свойство и второй строковый тип{ "Foo1", ..., "Foo3000" }
. Перемещение dgClasses до 20 элементов приводит к тому, что однопотоковое и фоновое выполнение теперь занимает в среднем 0,02~ и 0,04~ секунды. Может быть, это как-то связано с вашим источником данных и количеством свойств? Загадочный. - person OhBeWise   schedule 22.01.2015