J'ai listView dans mon programme (C#). Je change certaines couleurs d'arrière-plan et d'avant-plan après avoir ajouté des éléments à listview. Tous les articles sont OK et les couleurs aussi. Si j'utilise le tri avec listView, alors toutes les 6 premières couleurs d'éléments ont disparu. Et certaines couleurs des objets de repos sont en désordre. Cet effet se produit avec le tri par défaut et mon propre trieur personnalisé. Je fais beaucoup de changements aux données listView items et finalement quand listView a été trié plusieurs fois toutes les couleurs sont dans les bonnes positions. Qu'est-ce qui ne va pas?Problème avec les couleurs d'arrière-plan et de premier plan de listView lorsque listView est trié
Problème avec les couleurs d'arrière-plan et de premier plan de listView lorsque listView est trié
Répondre
Messed autour pour un peu et je ne suis pas sûr de ce que vous pourriez faire mal. Cela semble bien fonctionner pour moi mais sans voir votre code, il est difficile de dire ce qui se passe. En tout cas, voici un exemple de travail simple qui pourrait vous aider à comprendre ce qui est différent. Il suffit de créer un formulaire avec une vue ListView à 3 colonnes dans la vue Details:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
Color[] backgroundColors = new[] { Color.Green, Color.White, Color.Blue };
Color[] foregroundColors = new[] { Color.Black, Color.Red, Color.Yellow };
Random random = new Random();
for (int i = 0; i < 100; i++)
{
Color backgroundColor = backgroundColors[random.Next(0, 3)];
Color foregroundColor = foregroundColors[random.Next(0, 3)];
ListViewItem listViewItem = listView1.Items.Add(foregroundColor.Name);
listViewItem.SubItems.Add(backgroundColor.Name);
listViewItem.SubItems.Add(Guid.NewGuid().ToString());
listViewItem.BackColor = backgroundColor;
listViewItem.ForeColor = foregroundColor;
}
listView1.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent);
}
private void listView1_ColumnClick(object sender, ColumnClickEventArgs e)
{
ListViewItemComparer listViewItemComparer = new ListViewItemComparer {SortColumn = e.Column, Sorting = SortOrder.Ascending};
if (listView1.ListViewItemSorter is ListViewItemComparer)
{
ListViewItemComparer listViewItemComparerOld = listView1.ListViewItemSorter as ListViewItemComparer;
if (listViewItemComparerOld != null && listViewItemComparerOld.SortColumn == e.Column)
{
listViewItemComparer.Sorting = (listViewItemComparerOld.Sorting == SortOrder.Ascending) ? SortOrder.Descending : SortOrder.Ascending;
}
}
listView1.ListViewItemSorter = listViewItemComparer;
listView1.Sort();
}
#region ListViewItemComparer
public class ListViewItemComparer : IComparer
{
#region Public Properties
public int SortColumn { get; set; }
public SortOrder Sorting { get; set; }
#endregion
public ListViewItemComparer()
{
SortColumn = 0;
Sorting = SortOrder.Ascending;
}
public int Compare(object x, object y)
{
ListViewItem listViewItem1 = null;
ListViewItem listViewItem2 = null;
string compare1 = string.Empty;
string compare2 = string.Empty;
if (Sorting == SortOrder.Ascending)
{
listViewItem1 = (ListViewItem)x; listViewItem2 = (ListViewItem)y;
}
if (Sorting == SortOrder.Descending)
{
listViewItem1 = (ListViewItem)y; listViewItem2 = (ListViewItem)x;
}
if (listViewItem1 != null && (SortColumn < listViewItem1.SubItems.Count) && (listViewItem1.SubItems[SortColumn] != null))
{
compare1 = listViewItem1.SubItems[SortColumn].Text;
}
if (listViewItem2 != null && (SortColumn < listViewItem1.SubItems.Count) && (listViewItem2.SubItems[SortColumn] != null))
{
compare2 = listViewItem2.SubItems[SortColumn].Text;
}
return string.Compare(compare1, compare2);
}
}
#endregion
}
Désolé, mon programme change certaines des couleurs des sous-éléments. –
Maintenant, cela fonctionne. Je viens de désactiver le tri:
listView1.ListViewItemSorter = null;
Et après toute modification a été fait, le tri est activé à nouveau:
listView1.ListViewItemSorter = new Sorter();
- 1. Problème d'arrière-plan ListView personnalisé
- 2. Android ListView Sélecteur de couleurs
- 3. Personnalisation des couleurs ListView Android?
- 4. Android ListView couleurs d'arrière-plan toujours en gris
- 5. Personnalisation des couleurs ListView ContextMenu
- 6. Problème avec rafraîchissement ListView
- 7. ListView ListView et ExpandableListView
- 8. WPF - ListView within listView Problème de la barre de défilement
- 9. Problème de mouvement ListView
- 10. ListView et les boutons à l'intérieur de ListView
- 11. Android: problème avec SpanableString et ListView
- 12. ListView Problème
- 13. Nasm, chargeur de démarrage commutant les couleurs de premier plan et d'arrière-plan
- 14. problème listview
- 15. android: listview focus sur le premier élément
- 16. Premier élément de la liste de données ListView parfois dupliqué?
- 17. Android: problème ListView
- 18. 10 Listview problème de remplissage
- 19. Listview SelectedIndexChanged problème
- 20. couleur de sélection Listview
- 21. Le moyen le plus simple de changer les couleurs listview et treeview
- 22. ListView, CheckBoxes et les ID
- 23. LINQ et pagination avec listview
- 24. Performance avec XML et ListView
- 25. Listview Row Overlap Problème
- 26. Problème Android SimpleCursorAdapter/ListView
- 27. C# ListView Problème Ajout d'éléments
- 28. Bonjour ListView Tutorial Problème
- 29. Comment changer l'arrière-plan de la cellule dans ListView lorsque les données changent?
- 30. Android ListView problème d'actualisation
Les couleurs restent-elles avec les mêmes rangées sans égard à leur commande? –
Avez-vous du code que vous pouvez partager? J'ai plusieurs projets qui utilisent le contrôle System.Windows.Forms.ListView, lignes colorées/texte et ListViewItemComparers personnalisés sans aucun problème. –