Wie schon erwähnt, gibt es dafür das Data-Feld bei jedem Item.
Entweder du füllst eine Liste/Array parallel zur ListBox und speicherst am gleichen Index, wo etwas in der ListBox steht auch im Array, dann kannst du über den Index des Items auf das Array zugreifen.
Oder man füllt die ListBox/TreeView, speichert dann den kompletten Namen in einer Liste/Array und legt den Index vom Array in .Data des Items.
Oder man speichert direkt den vollen Namen als cast in .Data ab.
Oder man speichert den vollen Namen in einem Datenobjekt, welcher in .Data verlinkt wird.
Oder man nimmt statt des Daten-Objekts einen Record.
Oder man trennt seine Daten von der
GUI, legt eine Liste an, füllt dann über diese Liste die ListBox/TreeView und speichert in .Data die Rückreferenzen auf die Werte in der Liste.