I ListView.GetItemAt(x,y)
bin mit einem Element aus der ListView
zurückzuholen, aber ich bin nicht der Lage, das Produkt zu erhalten, wenn ich die FullRowSelect
Option false
gesetzt.ein Element in einer Listenansicht abrufen
Ich bin nicht sicher, wie es in .NET 1.1 zu tun. Hat jemand irgendwelche Hinweise?
Hier ist ein Code-Schnipsel:
public int GetListViewSubItem(ListView listView1, Point pt)
{
const int LVM_FIRST = 0x1000;
const int LVM_GETSUBITEMRECT = (LVM_FIRST + 56);
const int LVIR_BOUNDS = 0;
RECT myrect;
ListViewItem lvitem = listView1.GetItemAt(pt.X, pt.Y);
if(lvitem == null && listView1.SelectedItems.Count > 0)
lvitem = listView1.SelectedItems[0];
int intLVSubItemIndex = -1;
ListViewItem.ListViewSubItem LVSubItem = null;
if(lvitem != null)
{
int intSendMessage;
for (int i = 1; i <= lvitem.SubItems.Count - 1; i++)
{
LVSubItem = lvitem.SubItems[i];
myrect = new RECT();
myrect.top = i;
myrect.left = LVIR_BOUNDS;
intSendMessage = SendMessage(listView1.Handle,
LVM_GETSUBITEMRECT,
lvitem.Index, ref myrect);
if (pt.X < myrect.left)
{
LVSubItem = lvitem.SubItems[0];
intLVSubItemIndex = 0;
break;
}
else if (pt.X >= myrect.left & pt.X <= myrect.right)
{
intLVSubItemIndex = i;
break;
}
else
LVSubItem = null;
}
}
if (LVSubItem == null || lvitem == null)
{
intLVSubItemIndex = -1;
}
return intLVSubItemIndex;
}
Diese Methode soll mir zeigen, welche Zelle geklickt wurde. Tt funktioniert, aber wenn ich die fullrowselect
zu false
ändern, gibt es einen null
Wert zurück.
Ich versuchte sogar getitemat(0,e.y)
, aber es hat nicht funktioniert.
Immer, wenn ich ein Element in ListView
auswähle, wird es mit der Farbe Blau hervorgehoben, so dass es nicht möglich ist, anzuzeigen, was ausgewählt ist. Ich versuche, das blaue Highlight zu entfernen.
Irgendwelche Gedanken?
hallo du hast nichts herausgefunden –