Vider une listview ? [Résolu]

Signaler
Messages postés
497
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
13 juillet 2015
-
Messages postés
497
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
13 juillet 2015
-
Hello,



comment je peux faire pour -entre deux utilisations- vider ma listview
? j'ai essayer update, refresh après un clear(), mais ca ne marche pas.
A voir également:

12 réponses

Messages postés
721
Date d'inscription
dimanche 10 juin 2001
Statut
Membre
Dernière intervention
27 mars 2011
7
listView1.Items.Clear();
Messages postés
497
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
13 juillet 2015
6
MDR !!!!

je viens de comprendre l'erreur en lisant mon code ci dessus.....



En fait, j'ai déclaré en global ma listview en tant que public, MAIS, je la re déclarais au début de remplir_listview().



Ainsi lorsque je croyais vider la seule et unique listview, je vidais
la listview du même nom mais qui était déjà vide. J'ai effacé la ligne

// Create a new ListView control.

ListView list_Liste_Fichiers = new ListView();
list_Liste_Fichiers.Bounds = new Rectangle(new Point(16,264), new Size(480,170));
et tout marche nikel, elle s'efface bien et est bien rafraichit toute seule.







Merci à tous pour vos réponses
Messages postés
497
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
13 juillet 2015
6
j'ai essayé, mais même si cela la vide, l'affichage reste le même, et
les lignes ne disparaissent pas. Je veux ET la vider (ok) ET la
rafraichir (NOK)
Messages postés
108
Date d'inscription
vendredi 11 juillet 2003
Statut
Membre
Dernière intervention
27 novembre 2007

Bonjour,



Quand tu parles de lignes qui ne disparaissent pas, tu parles de la grille (GridLines) ?

-- AOGie --
Messages postés
497
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
13 juillet 2015
6
non, non, non



si je remplit ma listview avec 5 lignes par exemple, je veux faire un bouton qui la vide.



Actuellement, en cliquant sur le bouton j'arrive à vider la listview de
ses items, mais l'affichage reste identique. Les 5 lignes restent
toujours là, et je peux même les sélectionner !



Comment fait-on pour rafraichir la listview après l'avoir vidée ?
Messages postés
497
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
13 juillet 2015
6
Ou alors, comment fait-on pour tuer le contrôle listview1 ? j'ai essayé
listview1.Dispose(), avec un refresh, ou un update après, mais la
listview ne disparait pas de ma form !!!!



KéZaKo
Messages postés
108
Date d'inscription
vendredi 11 juillet 2003
Statut
Membre
Dernière intervention
27 novembre 2007

As-tu essayé un autre projet à côté avec un listview que tu remplies puis que tu vides de manière identique ?


-- AOGie --
Messages postés
86
Date d'inscription
jeudi 23 octobre 2003
Statut
Membre
Dernière intervention
21 juin 2007
2
Et en faisant ceci :

listview.Items.Clear();
Application.DoEvents();

Est-ce que cela convient ?
Messages postés
108
Date d'inscription
vendredi 11 juillet 2003
Statut
Membre
Dernière intervention
27 novembre 2007

Normalement, il n'y a pas besoin d'Application.DoEvents();

Soit il y a un bug... soit quelque chose ne va pas dans ton code car listview.Items.Clear();

suffit.

Est-ce le même thread qui manipule l'objet listview ?

As-tu un extrait de code à fournir pour éclairer un peu plus ?

As-tu essayé ce que je t'ai posté précédemment ?

En dernier recours, tu peux placer en commentaires tout code superflus
jusqu'à obtention du résultat puis décommenter jusqu'à trouver
l'erreur...


-- AOGie --
Messages postés
497
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
13 juillet 2015
6
Je crois qu'il y a mésentente en fait. La listview se vide bien, mais
en fait, je crois que c'est que le rafraichissement de ma form1 qui
n'est pas fait. C'est pour ca qu'elle n'est pas mise à jour.



Comment je peux faire pour redessiner les contrôles de ma form1 avec leur nouveau contenu ?
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
93
Salut,

Avec la méthode Refresh du form.
Mais je ne vois pas non plus pourquoi le rafraichissement ne se fait pas automatiquement.
Tu n'aurais pas fait une appel à la méthode SuspendLayout du ListView en oubliant d'appeler ResumeLayout ensuite ?

Cocoricoooooooo !!!!
coq
MVP Visual C#
Messages postés
497
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
13 juillet 2015
6
Non, non, Coq, je ne touche pas encore à
l'affichage, c'est pour ça que je cafouille un peu sur les méthodes à
utiliser pour rafraichir ma form. Tu dis que c'est censé rafraichir la
listview tout seul ? Pourtant ça ne le fait pas. Est-ce parcequ'elle
est contenu dans un tabControl sur ma form1 ? Qu'est-ce que je dois
rafraichir, (si rafraichir qqch je dois) :

_ listview1.refresh() ? marche pas

_ MaForm.tabControl1.TabPages[0].Refresh(); ? marche pas

_ MaForm.Refresh(); ? marche pas

_ Application.DoEvents(); ? marche pas



Bon, sinon, je vous donne le code dont je me sers pour remplir ma listview qui s'appelle list_Liste_Fichiers.





private void Remplir_la_listview(string string_La_Liste)

{

DateTime dt = DateTime.Now;

Trame ma_trame = new Trame();

string[,] tableau = ma_trame.De_Concatener_La_Liste(string_La_Liste);



// Create a new ListView control.

ListView list_Liste_Fichiers = new ListView();


list_Liste_Fichiers.Bounds = new Rectangle(new Point(16,264), new
Size(480,170));


list_Liste_Fichiers.View = View.Details;

list_Liste_Fichiers.LabelEdit = true;

list_Liste_Fichiers.AllowColumnReorder = true;

list_Liste_Fichiers.CheckBoxes = true;

list_Liste_Fichiers.FullRowSelect = true;

list_Liste_Fichiers.GridLines = true;

list_Liste_Fichiers.Sorting = SortOrder.Ascending;



ListViewItem[] col_lvi = new ListViewItem[tableau.Length / 5];

//on copie la
collection historique dans une temporaire que je vais vider au fur


//et à mesure que je rencontre les fichiers présents.

ma_col_historique_recherchee = ma_col_historique.duplicate();



for (int i=0; i