2010-04-19 5 views
1

J'ai un ListBox de taille constante 4zone de liste mise à jour Problème

Je peux ajouter un nombre n de ListBoxItems, Une fois que la taille est supérieure à 4 J'ai activé la barre de défilement,

Problème: lorsque défilement est activé (plus de 4 éléments), chaque fois que je supprime le dernier élément, il y a un patch blanc à la place de l'élément supprimé.

Le patch ne se déclenche que lorsque je touche la barre de défilement.

J'ai essayé ListBox.Invalidate(), mais aucune utilisation

+2

utilisez-vous la méthode BeginUpdate() quelque part et oublier d'appeler la méthode EndUpdate() (ou sauter à cause d'une exception)? – TLiebe

+0

Non Je n'utilise pas BeginUpdate() – Gaddigesh

Répondre

2

Supplémentaire: Cela se produit uniquement lorsque le dernier élément est sélectionné lors de sa suppression.

Solution: définissez Explicitement la nouvelle sélection, et le dernier élément faire défiler la liste première:

 int selected = listBox1.SelectedIndex;   
     if (selected >= 0) 
     { 
      listBox1.Items.RemoveAt(selected); 
      if (selected == listBox1.Items.Count) 
       listBox1.SelectedIndex = 0; 

      listBox1.SelectedIndex = selected - 1; 
     } 
+0

Je mets la nouvelle sélection (même après le problème persiste), je n'ai pas compris la déclaration " pour le dernier élément faites défiler la liste en premier ". Pouvez-vous élaborer s'il vous plaît – Gaddigesh

+0

C'est cette déclaration: 'listBox1.SelectedIndex = 0;' –

+0

Merci beaucoup, Qui a aidé – Gaddigesh

0

Quel est votre code « supprimer » pour supprimer dans la liste? Si vous utilisez quelque chose comme ceci:

listBox.Items[3] = null; 

... alors il y a encore 4 articles dans la zone de liste, juste que le 4e est nul. Vous devez en fait supprimer l'élément:

listBox.Items.Remove(3); 
+0

Je fais listBox.Items.Remove (3) seulement, Anyhow ci-dessus la réponse a résolu mon problème – Gaddigesh

Questions connexes