visualstudio 2010-Listview无法正常工作c#

本文关键字:工作 常工作 2010-Listview visualstudio | 更新日期: 2023-09-27 17:59:01

我对我的项目有两个ListView控件,其中一个运行得很好,另一个直到最近都不确定为什么它的行为非常奇怪。

有时它无法识别被检查的属性,有时它会返回",当我们得到被检查的特性时,有时它工作正常,并返回TrueFalse

访问ListBox的代码如下,请记住,我有两个非常好的代码,它有相同的代码来获取检查状态。

当其他人工作时,中间一列的潜台词总是返回"时,它也开始出现问题,所以我不得不更改代码以从数据表中获得所需的输出。

更新

当我处于调试模式并逐行运行时,它每次都很好,如果我运行它,它就不会得到它并跳过行,或者可能无法识别检查的行

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);
                    }

                }
            }

visualstudio 2010-Listview无法正常工作c#

将对BeginInvoke的调用替换为对Invoke的调用-BeginInvoke将异步处理,这可能会导致时间问题。