Доступ к членам списка, кажется, выбивает меня из моей функции в C # - PullRequest
0 голосов
/ 22 июля 2009

Используя VC # 2008, в WinXP 32 бит, следующая функция

 private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
    {
        textBoxURL.Text = webBrowser1.Url.ToString();
        if (bStart)
        {
            string strData= webBrowser1.DocumentText;
            int iIndex = listBox1.Items.IndexOf(strID);

            if (strData.Contains("No news found"))
            {
                listBox1.SetSelected(iIndex, false);
                listBox1.Items[iIndex] = getID((string)listBox1.Items[iIndex]);
            }
            else
            {
                listBox1.Items[iIndex] = getID((string)listBox1.Items[iIndex]) + "; ONLINE";
                if (!listBox1.GetSelected(iIndex))
                {
                    timer2.Enabled = true;
                    listBox1.Items[iIndex] = getID((string)listBox1.Items[iIndex]) + "; MOVING";
                }
            }

            timer1.Interval = iTime + rand.Next(iTimeVar);
            timer1.Enabled = true;
        }
    }

Когда выполняется строка listbox1.SetSelected (iIndex, false), кажется, что функция просто возвращается прямо здесь. То же самое с любой из строк, которые обращаются к функциям-членам списка.

Это должно произойти? Есть ли способ обойти это?

Ответы [ 2 ]

1 голос
/ 22 июля 2009

Проверьте значение iIndex.

Скорее всего, этот индекс выходит за пределы (то есть, потому что строка, которую вы пытаетесь найти, не содержится в списке) и строка кода вызывает исключение.

0 голосов
/ 22 июля 2009

Вероятно, происходит строка listbox1.SetSelected (iIndex, false) выдает исключение. Если вы проходите через это в отладчике и отключены уведомления об исключениях, это будет выглядеть так же, как если бы функция перестала выполняться в этот момент.

Попробуйте включить уведомления об исключениях из первого шанса и посмотреть, не обнаружит ли это проблему. Перейти к

  • Отладка -> Исключения
  • Установите флажок «Брошенный» для Common Language Runtime

Также отключите опцию «Просто мой код» в Visual Studio

  • Инструменты -> Параметры -> Отладчик
  • Снимите флажок «Включить только мой код»
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...