Avatar billede ahara Nybegynder
12. november 2007 - 21:41 Der er 4 kommentarer og
1 løsning

Spørgsmål til Listview

Jeg har to spørgsmål:

Er der en metode der kan returnere antallet af Listviewitems i et Listview?

Hvis jeg har et Listview kan jeg så ved klik på et Listviewitem markere (med blå) samtlige Listviewitems i den række?

I må gerne sende et par eksempler.

Tak
Avatar billede mr-kill Nybegynder
12. november 2007 - 22:40 #1
Tror næsten ikke der behøves nogen eksempler, det er meget let: (udskift listView1 med din listViews navn)

For at finde ud af hvor mange items der er i din listView gør du sådan:
int itemsInListView = listView1.Items.Count;

Hvis der skal markeres en hel række når der klikkes på skal du skrive dette når du opretter din listView:
listView1.FullRowSelect = true;
Avatar billede ahara Nybegynder
13. november 2007 - 10:30 #2
Jeg er med på listview1.Items.Count, men det giver mig samtlige items. Hvad hvis vi siger jeg ikke kender antallet af Rows og Columns, kan jeg så dynamisk kalde en funktion der returnerer disse?
Avatar billede mr-kill Nybegynder
13. november 2007 - 17:07 #3
Altså, items count må vel betragtes som rows count?

int ColumnsCount = listView1.Columns.Count;
int RowsCount = listView1.Items.Count;

Er ikke hel sikker på jeg forstår?
Avatar billede ahara Nybegynder
14. november 2007 - 14:20 #4
Tak det virker.

Kan du også hjælpe med hvordan jeg sorterer hver kolonne?
Avatar billede mr-kill Nybegynder
14. november 2007 - 15:53 #5
Her er en måde:

using System;
using System.Collections;
using System.Windows.Forms;

public class ListViewColumnSorter : IComparer
{
    private int ColumnToSort;
    private SortOrder OrderOfSort;
    private CaseInsensitiveComparer ObjectCompare;

    public ListViewColumnSorter()
    {
        ColumnToSort = 0;
        OrderOfSort = SortOrder.None;
        ObjectCompare = new CaseInsensitiveComparer();
    }

    public int Compare(object x, object y)
    {
        int compareResult;
        ListViewItem listviewX, listviewY;

        listviewX = (ListViewItem)x;
        listviewY = (ListViewItem)y;

        compareResult = ObjectCompare.Compare(listviewX.SubItems[ColumnToSort].Text, listviewY.SubItems[ColumnToSort].Text);

        if (OrderOfSort == SortOrder.Ascending)
            return compareResult;
        else if (OrderOfSort == SortOrder.Descending)
            return (-compareResult);
        else
            return 0;
    }

    public int SortColumn
    {
        set { ColumnToSort = value; }
        get { return ColumnToSort; }
    }
    public SortOrder Order
    {
        set { OrderOfSort = value; }
        get { return OrderOfSort; }
    }
}

//og så når du opretter din listview:
private void Form1_Load(object sender, EventArgs e)
    {
        listSorter = new ListViewColumnSorter();
        listview1.ListViewItemSorter = listSorter;
    }
private void listview1_ColumnClick(object sender, ColumnClickEventArgs e)
    {
        if (e.Column == list1Sorter.SortColumn)
        {
            if (listview1.Order == SortOrder.Ascending)
                listview1.Order = SortOrder.Descending;
            else
                listview1.Order = SortOrder.Ascending;
        }
        else
        {
            listview1.SortColumn = e.Column;
            listview1.Order = SortOrder.Ascending;
        }
        listview1.Sort();
    }

    private ListViewColumnSorter listSorter;
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester