Erreur bizarre avec remove.items de listbox [Résolu]

Signaler
Messages postés
102
Date d'inscription
mercredi 5 février 2003
Statut
Membre
Dernière intervention
17 mars 2009
-
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
-
Salut, comme je l'indique dans le titre, j'ai une erreur assez surprenante quand je click sur le lien lnkSupprDossier donc voici le code:
private void lnkSupprDossier_LinkClicked(object sender, System.Windows.Forms.LinkLabelLinkClickedEventArgs e)
{
try
{
lstDossiers.Items.Remove (lstDossiers.Text ); //L'erreur se situe là, je stocke des chemins de dossiers. Ce qui suit est ignoré et ça passe direct au catch
lblSelFolder.Text = "Aucun dossier sélectionné";
lblSelFolder2.Text = "Aucun dossier sélectionné";
StreamWriter swDossiers = new StreamWriter (Application.StartupPath + @"\lstDossiers.ini",false);
foreach (string item in lstDossiers.Items )
{
swDossiers.WriteLine (item);
}
swDossiers.Close ();
}
catch
{
MessageBox.Show ("Aucun dossier n'est sélectionné.","Information",MessageBoxButtons.OK ,MessageBoxIcon.Information );
}
}

Est-ce déjà arrivé à quelqu'un, ? Si vous voulez essayer l'appli, envoyer un moi un mp avec votre mail et je vous la filerai. Pour ma part, je suis complètement dérouté par ce souci...

Merci d'avance

@ plus

lagoelle

6 réponses

Messages postés
102
Date d'inscription
mercredi 5 février 2003
Statut
Membre
Dernière intervention
17 mars 2009

Salut et merci de venir à mon aide ;-)

En fait j'ai trouvé la solution, quand je supprimais un dossier, l'évènement index_change du listbox était levé.
Or le lstDossiers.text n'a plus de valeur, donc une exception était lancée dans Directory.GetFiles.
J'ai résolu le soucis avec un try-catch et ça à l'air de fonctionner. Je vais les tests sur un autre ordi demain et si tout va bien j'ajoute la source sur le site ce week end.

Encore merci à tous et désolé (j'aurai du réfléchir un peu plus avant de vous solliciter)

@ plus

lagoelle
Messages postés
2
Date d'inscription
samedi 14 mai 2005
Statut
Membre
Dernière intervention
22 janvier 2006

Remplace ta ligne erronnée par celle-ci : lstDossiers.Items.Remove( lstDossiers.SelectedItem );
ou bien celle-ci marche aussi très bien : lstDossiers.Items.RemoveAt(lstDossiers.SelectedIndex);

Car tu ne fais que passer le text en paramètre, et non l'item en tant que tel, c'est pourquoi il ne le reconnait pas
Messages postés
102
Date d'inscription
mercredi 5 février 2003
Statut
Membre
Dernière intervention
17 mars 2009

Salut,

J'ai remplacé la ligne erronée par les 2 propositions (j'en avais déjà testé une ) et toujours le même soucis.
Si quelqu'un veut, je peux lui envoyer le projet (c'est un prog qui archive les faxs, les imprime...).
@ plus

lagoelle
Messages postés
102
Date d'inscription
mercredi 5 février 2003
Statut
Membre
Dernière intervention
17 mars 2009

Salut,
En fait après approfondissement, l'erreur ne vient pas de la partie de code donnée au dessus. Le fait de supprimer un item lève l'évenement index_changed du list box:

private void lstDossiers_SelectedIndexChanged(object sender, System.EventArgs e)
{
lblDate.Text = DateTime.Today.ToShortDateString ();
txtDest1.Text ="";
txtDest2.Text ="";
txtDest3.Text ="";
txtDest4.Text ="";
txtDest5.Text ="";
txtNumFax.Text ="";
txtAffaire.Text ="";
txtPages.Text ="";
txtMessage.Text ="";
fileFax.Items.Clear ();
lblSelFolder.Text = lstDossiers.Text ;
lblSelFolder2.Text = lstDossiers.Text ;
String[] fichiers = Directory.GetFiles(lstDossiers.Text); //l'erreur vient d'ici
for (int i = 0; i < fichiers.Length; i++)
{
if (Path.GetExtension (fichiers[i])== ".jfax")
{
fileFax.Items.Add (Path.GetFileNameWithoutExtension (fichiers[i]));
}
}
}

Meme question, quelqu'un voit d'ou ca peut venir ?

@ plus

lagoelle
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
49
Salut, quel est le message d'erreur ?



Mx
MVP C#
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
49
Pas de probleme ;)



Mx
MVP C#