Я новичок в c# и не смог найти правильного ответа на свой вопрос. Поэтому я публикую здесь.
Я узнал, что вы должны использовать BindList obj вместо обычного List , чтобы DataGridView немедленно отображал вам обновленный список.
Но он не выполняет свою работу. Я должен ждать, как 5 ~ 10 SE c, чтобы увидеть DataGridView для обновления. Однако всякий раз, когда я нажимаю на ячейку, она обновляется немедленно. Это то, что я хочу, за исключением того, что я хочу сделать это, не щелкая ячейку.
Поэтому я проверил, занимает ли код для добавления элемента в список больше времени, чем я думал. но это было не так.
public class Data
{
public string code { get; set; }
public int amount { get; set; }
}
BindingList<Data> DataList = new BindingList<Data>();
stopwatch.Start();
// codeId and size are live streaming data that come in every second
// Update if codeId is not in DataList else make new element and add to DataList
var obj = DataList.FirstOrDefault(x => x.code == codeId);
if (obj != null) obj.program = size;
else
{
var dataElement = new Data { code = codeId, amount = size };
DataList.Add(dataElement);
// dataGridView.Update(); //did not work
// dataGridView.Refresh(); //did not work.
}
stopwatch.Stop();
Console.WriteLine("Time elapsed: {0}", stopwatch.Elapsed); //take only milliseconds
Итак, как сделать DataGridView для немедленного обновления?