I have the following list box made with multiple columns:

I want to be able to sort this list box by one column (any of those at display).
Question: How can I do this?
I know, I could capture Y position at mouse down (this will help me to identify when the header area is clicked). I can also capture X position if column widths doesn't change.
So mouse down even alone could help me to identify what column has been clicked on. But I have to be able either:
a. Keep the column widths fixed, or
b. Read the column widths when the list box gets filled in.
Could you possibly think of a solution for
a and/or
b above.
Gridview is a good option but I want something very light weight. Are there some other middle ground controls like ListView we had in vb 6.0?
Thanks.