我有一個帶有列表視圖的窗體。調用Form.Show後,我需要更新我的列表視圖。但是,無論我的列表視圖代碼調用Form.Show後,它都會出現空白,沒有列,沒有數據。如果我將Form.Show移動到我的列表視圖代碼之後,那麼listview將正確顯示。如何在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 這種形式需要一個實例。閱讀this post後,我的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;
}
在我設置_dialog = null,則FormClosed事件。
_snapshots何時填充? – 2011-12-30 13:14:03
它在Form.Show後得到填充。填充_snapshots會觸發上述方法。 – Web 2011-12-30 13:18:52
那麼Form.Show與這個問題無關嗎?填充何時被調用。對相關的例程進行一些調試,確保你認爲正在發生的事情正在發生。要成爲「doh」時刻,這不會看到您發佈的代碼有任何問題。 – 2011-12-30 13:52:57