Here's a simple but effective trick to ensure that the column of a ListView control is wide enough to display the entire string you're assigning to the column title or to an element. Just drop a Label on the form, set its Autosize property to True and Visible property to False. Also, ensure that the Label control has a Font property that matches the one used for the ListView.
Then, when you want to ensure that a string will be displayed correctly in the ListView, just assign it to the Label control first, and then compare the Label's Width property with the width of the ListView column:
Dim text As String
text = "A very long string added to the ListView"
' Add a couple of spaces for good measure.
Label1.Caption = text & " "
' Compare current column width with Label's width
If ListView1.ColumnHeaders(1).Width < Label1.Width Then
' make the column wider if necessary
ListView1.ColumnHeaders(1).Width = Label1.Width
ListView1.ListItems.Add , , text