2009-07-22 3 views
0

avec VC# 2008, Windows XP 32 bits, la fonction suivanteAccès aux membres listbox me semble chasser de ma fonction en C#

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

Lorsque la ligne listbox1.SetSelected (iIndex, false) exécute, la fonction semble juste revenir là. Pareil avec n'importe laquelle des lignes qui accèdent aux fonctions membres du listbox.

Est-ce censé se produire? Y a-t-il un moyen de contourner cela?

Répondre

1

Vérifiez la valeur de iIndex.

Il est plus que probable que cet index soit hors limites (c'est-à-dire que la chaîne que vous essayez de localiser ne figure pas dans la liste) et que la ligne de code lève une exception.

+0

C'est exactement ça. MERCI! – dunecat

0

Ce qui se passe probablement est la ligne listbox1.SetSelected (iIndex, false) est en train de lancer une exception. Si vous passez cette étape dans le débogueur et que les notifications d'exception sont désactivées, il semblera que la fonction a cessé d'être exécutée à ce moment-là. Essayez d'activer les notifications d'exception de première chance et de voir si cela révèle un problème. Aller à

  • Debug - > Exceptions
  • Cochez la case "Jeté" pour Common Language Runtime

également désactiver le "Just My Code" Option dans Visual Studio

  • Outils - > Options - > Débogueur
  • Décochez la case "Activer uniquement mon code"
+0

Cela conduit également à la réponse, mais il me laisse seulement le donner à l'un et l'autre gars l'a eu droit sur la tête. Merci pour l'aide et le bon conseil! – dunecat

Questions connexes