У меня есть форма со списком.После вызова Form.Show мне нужно обновить мой список.Однако после вызова Form.Show независимо от моего кода просмотра списка он появляется пустым, без столбцов и без данных.Если я переместлю Form.Show до тех пор, пока мой код просмотра списка не будет выполнен, список будет отображаться правильно.
Вот мой код просмотра списка:
private void InitializeListView()
{
_snapshotList.BeginUpdate();
_snapshotList.Items.Clear();
foreach (ISnapshot snapshot in _snapshots)
{
string comment = InstanceFactory<ProjectRecoveryService>.Instance.RetrieveCommentsforSnapshot(snapshot);
string[] sub = new string[] { snapshot.Name, snapshot.Version.ToString(), snapshot.CreatedDate.ToString(), comment };
ListViewItem item = new ListViewItem(sub);
item.Tag = snapshot;
this._snapshotList.Items.Add(item);
}
_snapshotList.EndUpdate();
this._snapshotList.Refresh();
}
Примечание: у меня есть другая форма, которая очень похожа, но имеет TreeView, который кто-то еще расширил, который работает как нужно.
Есть мысли?
РЕДАКТИРОВАТЬ 1 Эта форма должна быть единичной.После прочтения этого поста мой код Form.Show структурирован следующим образом:
public static RestoreSnapshotDialog GetInstance()
{
if (_dialog == null)
{
_dialog = new RestoreSnapshotDialog();
_dialog.Show(Control.FromHandle(System.Diagnostics.Process.GetCurrentProcess().MainWindowHandle));
}
else
{
_dialog.BringToFront();
}
return _dialog;
}
В событии FormClosed я устанавливаю _dialog = null.