1) You are setting only SelectedImageIndex, forgetting about ImageIndex, so the item's own image appears only when the item gets selected.
2) All the items without an image explicitly set will display the first form the image list, so you should add a neutral image on top of ImageList1.
3) If the ImageList1 or the TreeView1 are meant to be reused or display the same items more than once, I suggest you to use image keys (ImageKey, SelectedImageKey) instead of indices to be able to look into the ImageList1 for the existence of an image from an already displayed item thus avoiding adding it again.
so... you should call code like this once, before feeding the tree:
Dim imgNeutral As Image
imgNeutral = Properties.Resources.NeutralImage
ImageList1.Images.Add(imgNeutral)
and change
n.SelectedImageIndex = nn
to
n.ImageIndex = nn
n.SelectedImageIndex = nn
Regards,
Daniele.