我正在努力與ListViews一段時間...我正在寫一個程序,我不能在這裏複製(它有637行長)...基本上我試圖刪除選定的行一個ListView ...但是如果ListView的大小足以顯示一個滾動條,它會對該程序進行打亂,說明「沒有爲對象實例設置對象引用」,但它實際上並沒有完全崩潰,但它顯示了一個醜陋的JIT調試窗口。 我知道這個問題與ListView的大小有關,因爲如果我只是試圖用一個活動的滾動條刪除ListView的任何項目,我會得到崩潰,但是如果我只是調整窗口的大小以足以禁用滾動條(即足夠大,所以一切都將適合和滾動條不會是必要的,因此係統不會成爲一個),一切正常工作! 我懷疑這可能是.NET plataform的一些內部錯誤....任何想法?我已經嘗試了各種代碼刪除選定的項目,他們每一個都有這個相同的錯誤,但我通過將所有ListView複製到一個數組,並刪除數組中的選定的項目,然後將它們複製回乾淨的ListView ....奇怪,凌亂,醜陋,我知道,但它是唯一可以工作的代碼...但現在我得到了同樣的錯誤,但是隻有在安裝程序之後,這是當我在Visual Studio中運行程序時,不會發生這種情況!)C# - ListView空異常
編輯: 刪除代碼是(註釋部分是我以前嘗試過的所有代碼,並且在同一個錯誤中失敗....這個只在istalled時崩潰,不在Visual Studio 2010中... Framework是.NET 4.0):
private void limparLinhasSelecionadas()
{
if (listView1.Items.Count > 0 && limpando == false)
{
limpando = true;
int i = 0;
//for (i = listView1.Items.Count - 1; i >= 0 ; i--)
//{
//if (listView1.Items[i].Selected == true)
//{
// listView1.Items[i].Remove();
//}
//}
//////for (i = listView1.SelectedIndices.Count - 1; i >= 0; i--)
//////{
////// listView1.Items[listView1.SelectedIndices[i]].Remove();
//////}
//foreach (ListViewItem item in listView1.SelectedItems)
//{
// listView1.Items.Remove(item);
//}
ArrayList itens = new ArrayList();
foreach (ListViewItem item in listView1.Items)
{
itens.Add(item);
}
foreach (ListViewItem item in listView1.SelectedItems)
{
itens.Remove(item);
}
listView1.Items.Clear();
foreach (ListViewItem item in itens)
{
listView1.Items.Add((ListViewItem)item.Clone());
}
//for (i = 0; i < itens.Count; i ++)
//{
// ListViewItem item = new ListViewItem((itens[i] as ListViewItem).Text);
// for (j = 1; j < (itens[i] as ListViewItem).SubItems.Count; j++)
// {
// item.SubItems.Add((itens[i] as ListViewItem).SubItems[j].Text);
// }
// listView1.Items.Add(item);
//}
for (i = 0; i < listView1.Items.Count; i++)
{
listView1.Items[i].Text = "Passe " + (i + 1).ToString();
}
////ListView listView = new ListView();
////int j = 0;
////for (i = 0; i < listView1.Items.Count; i++)
////{
//// //listView.Items.Add(listView1.Items[i]);
//// for (j = 0; j < listView1.Items[i].SubItems.Count; j++)
//// {
//// listView.Items[i].SubItems.Add(listView1.Items[i].SubItems[j].Text);
//// }
////}
////listView1.Items.Clear();
////for (i = 0; i < listView.Items.Count; i++)
////{
//// listView1.Items.Add(listView.Items[i].Clone() as ListViewItem);
////}
//foreach (ListViewItem item in listViewCollection)
//{
// listView1.Items.Add(item.Clone() as ListViewItem);
//}
SetWindowTheme(listView1.Handle, "Explorer", null);
limpando = false;
}
// SetWindowTheme(listView1.Handle, "Explorer", null);
}
顯示您刪除所選項目的代碼 – eyossi
您能編輯您的代碼以包含相關部分併發布它嗎? Yourpostishardtoread。 –
考慮在你的列表視圖中應用分頁,它將解決你的所有問題 – Talha