У меня есть следующий код, который в основном принимает значения от базы данных и заполняет listview.
using (IDataReader reader = cmd.ExecuteReader())
{
lvwMyList.Items.Clear();
while (reader.Read())
{
ListViewItem lvi = lvwMyList.Items.Add(reader["Value1"].ToString());
lvi.SubItems.Add(reader["Value2"].ToString());
}
}
Проблема, которую я имею, состоит в том, что это неоднократно выполняется в коротких интервалах (каждую секунду) и приводит к объектам в listview, постоянно исчезающем и вновь появляющемся. Там некоторый путь состоит в том, чтобы мешать listview обновиться, пока он не сделан с обновлениями? Что-то как ниже:
using (IDataReader reader = cmd.ExecuteReader())
{
lvwMyList.Items.Freeze(); // Stop the listview updating
lvwMyList.Items.Clear();
while (reader.Read())
{
ListViewItem lvi = lvwMyList.Items.Add(reader["Value1"].ToString());
lvi.SubItems.Add(reader["Value2"].ToString());
}
lvwMyList.Items.UnFreeze(); // Refresh the listview
}