You might be able to cheat a tree with a listbox. If you're ok with something that looks more like an outline (or windows folders). But, it'd be possible to open and close branches. Basically, you'd need an array of all brances with some two "special charachers" to indicate how deep a branch is:
-Level 1
-- Level 1-1
--- Level 1-1-1
--+ Level 1-1-2
---- Level 1-1-2-1
-+ Level 1-2
--- Level 1-2-1
Ok, then when you display it in your list box, you run through the array and determine if it's an open branch or a closed branch. You could even set it up so that if you open 1-A it close 1-B and visa-versa.
Anyhow, all you really need to do is toggle the + and - appropriately. Once you hit a +, you don't display anything underneath it (pretty easy to determine based on the number of dashes preceeding it). Then you just build a second array based on the data toggled on and off in the first array.
Then in your dialogbox function, you can allow the user to toggle the levels based on a click or a double-click (the way EB works the best way to handle a double-click is to have it remember what was last clicked and so if it's clicked twice it opens).
But, if you want something more than that, you'd have to be more specific.