J'ai un programme WPF construit en C#, et une partie de sa fonction est de remplir deux contrôles ListBox. À l'événement Window_Loaded le programme appelle la fonction Update() afin de remplir les ListBoxes, mais il n'exécute qu'une partie de la fonction. Et si j'appelle la fonction après qu'un append a été ajouté au fichier, la fonction va même tomber en panne. Le fichier est structuré comme suit:Une partie du code de fonction ne s'exécute pas
content_for_first_listbox content_for_second_listbox
La mise à jour de la fonction est la suivante:
private void UpdateURL()
{
StreamReader rdr = new StreamReader("Links.db");
string line;
int dummy;
URL.Clear();
TAGS.Clear();
while ((line = rdr.ReadLine()) != null)
{
dummy = line.IndexOf(' ');
URL.Add(line.Substring(0, dummy));
TAGS.Add(line.Substring(dummy + 1));
}
rdr.Close();
LLinks.Items.Clear();
LTags.Items.Clear();
for (int a = 0; a < URL.Count; a++)
{
LLinks.Items.Add(new ListBoxItem().Content = URL[a]);
LTags.Items.Add(new ListBoxItem().Content = TAGS[a]);
}
}
Il arrête l'exécution après la première boucle, je trouve que hors de débogage . Et voici la fonction d'ajout
private void LBookmarkBT_Click(object sender, RoutedEventArgs e)
{
StreamWriter wrt = new StreamWriter("Links.db", true);
wrt.Write("\n" + LURLTBox.Text + " " + LTagsTBox.Text);
wrt.Close();
UpdateURL();
}
Des idées? Mise à jour: Le problème est qu'il lisait toutes les lignes et les analysait correctement, mais alors il lisait un retour à la ligne de nulle part, la chaîne de ligne devenait "" et donc dummy = -1 et il lançait une exception de longueur . J'ai réussi à surmonter cela en mettant la boucle dans un bloc try-catch et en rejetant l'exception, et tout fonctionne bien, mais il semble un peu «sale» si je peux le dire. Que devrais-je faire ? Peut-être et si (dummy == -1) ne pas analyser la ligne?
try
{
while ((line = rdr.ReadLine()) != null)
{
dummy = line.IndexOf(' ');
URL.Add(line.Substring(0, dummy));
TAGS.Add(line.Substring(dummy + 1));
}
}
catch (Exception e)
{ }
avez-vous fait un pas dans votre code? J'allais dire que peut-être vous avez un problème avec le \ n à l'avant, et peut-être que ReadLine vous donne une ligne vide qui n'est pas analysée correctement. – Dave
Des idées, quelqu'un? – Andrew