Hejsan ! Hej, Tack Per Hultqvist Eftersom du jobbar i MultiSelect-mode så finns det inte en enda rad du är på. Användaren kan ju valt flera rader...listView1 ?
Jagt sitter och försöker lära mig C# :-)
Jag undra hur gör man för att fåreda på vilken radnummer man har markera
i en listView1
I VB6 får man det genom nr=ListItems(Item.Index).SubItems(1)
Men hur jag det i C#Sv: listView1 ?
ListView-kontrollen i .Net har flera properties som hjälper dig med detta :
SelectedIndex : Integer som talar om vilket index som är valt (användbart i första hand vid singleselect). Kan vara -1 om ingen ListViewItem är vald om jag minns rätt, kolla hjälpen.
SelectedItem : Referens till den ListViewItem som är vald (i första hand i singleselect mode). Kan vara null om ingen ListViewItem är vald.
SelectedItems : Collection av alla valda ListViewItems i multiselect mode. SelectedItems.Count är 0 om inga ListViewItems är valda.Sv: listView1 ?
Jag arbetar i multiselect mode, och det enda som jag kan välja är SelectedItems
Men hur jag än gör får jag inte fram villken rad jag är på.
Hur forstätter man för att få radnummret, (elle är jag helt ute och cyklar)
textBox1.Text=listView1.SelectedItems. ????Sv: listView1 ?
Det du kan göra är att loopa igenom SelectedItems-collectionen och hämta index för de ListViewItems som är valda :
foreach (ListViewItem li in listView1.SelectedItems)
{
MessageBox.Show(li.Index); // Visa index
MessageBox.Show(li.Text); // Visa värdet i den vänstra kolumnen (=SubItem[0])
}
Om du vill använda SelectedIndex eller SelectedItem så bör du nog sätta MultiSelect till false.
Alternativet är om du vill fånga ett event när du klickar på en ListViewItem. Det kan du nog göra även om du använder MultiSelect genom att kolla på ItemClick-eventet. Då får du reda på vilken item som är klickad på genom att antingen typkonvertera sender till ListViewItem eller att kolla i e.Item. Troligen det sista alternativet...sender innehåller nog hela ListViewn, inte bara den ListViewItem som är vald.