Erreur de Binding ListBox-ArrayList sur le dernier élément

Le
ThierryP
Bonjour,
J'ai une ArrayList liée au DataSource d'une ListBox. L'ajout et la
suppression d'éléments dans l'ArrayList se répercute bien à l'affichage de la
ListBox sauf lorsque l'ArrayList devient vide car ce qui était son dernier
élément reste affiché dans la ListBox.
Ci-dessous le code :
public partial class Form1 : Form
{
ArrayList al = new ArrayList();
public Form1()
{ InitializeComponent();
listBox1.DataSource = al;
}
private void btnAjouter_Click(object sender, EventArgs e)
{ BindingManagerBase bmb = BindingContext[al];
bmb.SuspendBinding();
al.Add("test");
bmb.ResumeBinding();
}
private void btnSupprimer_Click(object sender, EventArgs e)
{ BindingManagerBase bmb = BindingContext[al];
bmb.SuspendBinding();
al.RemoveAt(al.Count - 1);
bmb.ResumeBinding();
}
}
Cordialement,
Thierry
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Gilles TOURREAU
Le #12127181
Le Wed, 29 Aug 2007 12:54:01 +0200, ThierryP

Bonjour,
J'ai une ArrayList liée au DataSource d'une ListBox. L'ajout et la
suppression d'éléments dans l'ArrayList se répercute bien à l'affichage
de la
ListBox sauf lorsque l'ArrayList devient vide car ce qui était son
dernier
élément reste affiché dans la ListBox.
Ci-dessous le code :
public partial class Form1 : Form
{
ArrayList al = new ArrayList();
public Form1()
{ InitializeComponent();
listBox1.DataSource = al;
}
private void btnAjouter_Click(object sender, EventArgs e)
{ BindingManagerBase bmb = BindingContext[al];
bmb.SuspendBinding();
al.Add("test");
bmb.ResumeBinding();
}
private void btnSupprimer_Click(object sender, EventArgs e)
{ BindingManagerBase bmb = BindingContext[al];
bmb.SuspendBinding();
al.RemoveAt(al.Count - 1);
bmb.ResumeBinding();
}
}
Cordialement,
Thierry



Utilisez "bmb" comme CurrencyManager et appelez la méthode Refresh()

CurrencyManager bmb = (CurrencyManager)BindingContext[al];
al.RemoveAt(al.Count - 1);
bmb.Refresh();

NOTE : N'utilisez plus la classe ArrayList sous le .NET 2.0. Préférez la
classe Generic List<T> qui permet de typer fortement votre code et ainsi
trouver des erreurs à la compilation et non à l'execution... (Les
performances sont identiques car la classe List<T> gère un ArrayList
sous-jacent).

Dans votre cas :
private List<string> al = new List<string>();

Cordialement

--
Gilles TOURREAU


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr
Publicité
Poster une réponse
Anonyme