Hallo allerseits, ich grüble schon länger und finde keine Lösung zu meinem Vorhaben mit VC++2008: Habe ein Treeview, und versuche anhand der ermittelten Koordinaten (z.B. String^ ZielNodeKoord = treeView2->PointToClient(Point(e->X,e->Y))).ToString(); -> liefert z.B. {X=123.Y=123} den Index des dazu gehörenden Items an dieser Position zu ermitteln. Wie arbeite ich hier richtig mit "IndexOf"?
Das sieht nach .NET aus, da könntest du einfach die .HitTest Funktion verwenden: http://msdn.microsoft.com/en-us/library/z6sb88bz.aspx
Hi, ich verstehe dich so, das du die momentan ausgewewählte Node haben willst. Dann wäre das das richtige.
1 | int myNodeCount = myTreeView.SelectedNode.GetNodeCount(true); |
Leider keine Selektion. Trotzdem vielen Dank an die Helfer. Wenn ich etwas in das TreeView droppe, möchte ich feststellen, auf welches Item ich gedropped habe. Analog dazu: Windows-Explorer, wenn eine Datei in ein Laufwerk (c:\ oder d:\ oder ... ) gedropped wird, wie stellt man da das betroffene Laufwerk fest? Ich würde das im TreeView also mittels des Item-Index machen. Die Koordinaten habe ich ja. Und mit den Koordinaten könnte ich doch irgendwie an den Index des Item kommen?
C++ schrieb: > das betroffene Laufwerk wobei es bei mir aber keine Laufwerke sind. Es sind Sammlungen von Datensätzen.
Wenn du .HitTest() mit den Koordinaten aufrufst, bekommst du als Ergebnis unter anderem den getroffenen Node (bzw. null wenn keins getroffen) zurück. Darüber kannst du dann auch den Index bekommen, sofern dir der Node nicht sogar lieber ist.
So, hier also meine Lösung: { TreeViewHitTestInfo^ info = treeView2->HitTest(e->X, e->Y); TreeNode^ hitNode; if (info->Node != nullptr) { hitNode = info->Node; MessageBox::Show(((hitNode->Index)-6).ToString()); } } Nur komisch, dass er mir für den ersten Node "7" ausgibt. Daher die "-6". Nochmals Dank an die Helfer!
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.