Jag har nu förstått att en Listview inte är en matris som det först ser ut att vara. En ListViewItem täcker alltså en hel rad i en Listview. Sen kan den ha SubItems. För att komma åt Subitems är syntaxen Man kan använda Bounds-propertyn på en ListViewItem för att få rektangeln som omsluter hela raden, dvs ListViewItem plus dess ListViewSubItems. Om man sedan som föregående talare nämnde använder kolumnernas bredd så kan man räkna ut respektive "cells" positioner.Att välja kolumn rad i en Listview?
Jag har en Listview där jag vill placera en Combobox på den första kolumnen eller på den andra kolumnen beroende på var man klickar. Denna ska då presentera vissa val för användaren. Det fungerar bra på den första kolumnen, men hur gör jag i den andra.
lvItem = this.myListView1.GetItemAt(e.X, e.Y);
if(lvItem != null)
{
Rectangle ClickedItem = lvItem.Bounds;
Console.WriteLine("Bounds " + ClickedItem.Left + " " + ClickedItem.Right);
}
Koden skriver alltid ut 0 596 vilket vänster och höger kant på hela Listview'n.
Det jag är ute efter är kanterna på den andra kolumnen.
Idealiskt hade varit en funktion som returnerade en struktur med rad och kolumn som enkelt kunde läsas av. Då skulle man också kunna läsa av x,y koordinat på övre vänstra hörnet på just den här subitemen så man vet var man ska placera sin Combobox. Men också rad och kolumnindex så jag vet vilken cell som påverkats.
Är detta svårt? Jag har som sagt ingen större erfarenhet av ListView.
/Roland
Sv: Att välja kolumn rad i en Listview?
// Första "raden" och andra "kolumnen"
lwOrderHuvud.Items[0].SubItems[0]
Jag kan dock inte hitta någon egenskap för location eller x,y kordinater under detta objekt. Dock kan du komma åt Width genom Columns (se nedan), med denna egenskap kan man själv beräkna fram x,y för en specefik column/subitem.
lwOrderHuvud.Columns[0].Width
Sv:Att välja kolumn rad i en Listview?
Det finns också en funktion som heter GetBounds som är mer specialiserad än Bounds-propertyn men jag ser inte att den löser hela problemet åt dig utan beräkningar. Men titta på den också för säkerhets skull...