我有2 ListView控制我的項目其中一個工作完全正常,另一個直到最近不知道爲什麼它的演技非常非常奇怪。Listview不能正常工作c#
有時它不會承認的checked屬性,有時它會有時它會返回「」當我們選中的屬性有時工作正常,返回真或假。
訪問列表框的代碼如下,請記住我有2個完美的作品,它具有相同的獲取檢查狀態的代碼。
當中間列的子文字總是返回「」而其他人工作時,它開始出現問題,所以我必須更改代碼以從數據表中獲取所需的輸出。
UPDATE
此外,當我在調試模式和進一行行正常工作,每次並獲取價值,如果我運行它,它不會得到它,SKIPPS行或MAYBE不承認檢查行! BeginInvoke
將異步處理,這可能會導致時序問題 -
for (int i = 0; i < listView1.Items.Count - 1; i++)
{
// string tmpVal = string.Empty;
bool tmpVal = false;
if (listView1.InvokeRequired)
{
listView1.BeginInvoke(new MethodInvoker(
() =>
tmpVal = listView1.Items[i].Checked
));
}
else
{
tmpVal = listView1.Items[i].Checked;
}
if (tmpVal == true)
{
string senderEMail = string.Empty;
if (listView1.InvokeRequired)
{
listView1.BeginInvoke(new MethodInvoker(
() =>
senderEMail = listView1.Items[i].SubItems[1].Text.ToString()
));
}
else
{
senderEMail = listView1.Items[i].SubItems[1].Text.ToString();
}
int rowNumber = 0;
string rNumber = string.Empty;
if (listView1.InvokeRequired)
{
listView1.BeginInvoke(new MethodInvoker(
() =>
rNumber = listView1.Items[i].SubItems[3].Text.ToString()
));
}
else
{
rNumber = listView1.Items[i].SubItems[3].Text.ToString();
}
rowNumber = Convert.ToInt16(rNumber.Trim());
if (checkBox2.Checked)
{
//GET UNSUBSCRUBE URL IF ANY HIT IT AND ALSO SEND EMAIL
string unSubscribeUrl = resultSheet.Rows[rowNumber - 1]["UnsubscribeLink"].ToString();
string receiver = resultSheet.Rows[rowNumber - 1]["receiver"].ToString();
if (unSubscribeUrl != "")
{
unSubscribeUrl = unSubscribeUrl.Replace("amp;", "").Trim();
string html = getHtml(unSubscribeUrl);
}
//SENDING EMAIL
receiver = receiver.ToLower();
OutLook.Application oApp1 = new OutLook.Application();
OutLook.MailItem mail = oApp1.CreateItem(OutLook.OlItemType.olMailItem) as OutLook.MailItem;
mail.Subject = "unsubscribe | uitschrijven | gelieve geen mails te sturen";
mail.To = senderEMail;
SetAccount_2007_2010(mail, receiver);
Marshal.ReleaseComObject(oApp1);
}
if (checkBox3.Checked)
{
deleteSenderList.Add(senderEMail);
}
}
}
如果你把'bool'轉換成'string',然後再比較''True'',你真的必須有一個困惑的想法...... – 2013-02-14 13:18:36
是的,當時我心中可能有一些東西:D,造成這個問題呢?也如果我調試代碼,它每次都工作正常,如果我運行它不會... – confusedMind 2013-02-14 13:19:53
這可能是因爲調用'BeginInvoke'而不是'Invoke'造成的異步處理 - 請參閱我的答案。 – 2013-02-14 13:39:33