Mike,
there is the extra task of having labels over the listbox that would move, if you scroll horizontally (right<->left), as the listbox is not wide enough to hold all columns.
As it's a mover with two listboxes a solution might be to not put these two listboxes side by side but one underneath the other. Then you might have enough space horizontally to have simple fixed labels over all the columns.
Otherwise, yes, the simple task of scrolling headers is most easily achieved by a grid.
By the way I have designed such a control class with the UI Sepereated from the rest of the logic, so it does not matter much, if I use a listbox or grid. The only foundation is having two cursors options and selections, methods that move options to the selections cursor or vice versa and the UI is just blindly showing the cursors.
If you also separated your coding logic that way it should be quite easy to switch from listboxes to grids.
Bye, Olaf.