Alcune cose mi lasciano perplesso. Ad esempio, perché dividi la larghezza della lista per l'altezza di una riga? La larghezza è proporzionale al numero di colonne, non di righe. E chi ti assicura che l'altezza di una riga sia sempre 18, così come il margine sempre 4? Inoltre se la lista è più stretta della larghezza totale delle colonne wCol è negativa.
Comunque esiste ListView.AutoResizeColumns:
http://msdn.microsoft.com/en-us/libr...zecolumns.aspx