VC++ 2008 Treview IndexOf

Gast #2918439
Lesenswert?
• ▲
▼
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"?
Gast #2920296
Lesenswert?
• ▲
▼
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?
Gast #2920353
Lesenswert?
• ▲
▼
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.
Gast #2921172
Lesenswert?
• ▲
▼
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!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren