The ListView control doesn’t expose any property that lets you limit the amount of text users can type when editing an item’s label. However, you can do the trick with a couple of SendMessage API calls from within the BeforeLabelEdit event: with the LVM_GETEDITCONTROL message you retrieve the handle of the hidden Edit control that the ListView creates for let the user edit the node. If you then send the EM_LIMITTEXT message to this Edit control you can put a limit to the text that can be typed in this control:
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal _ hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, _ lParam As Any) As LongConst LVM_FIRST = &H1000Const LVM_GETEDITCONTROL = (LVM_FIRST + 24)Const EM_LIMITTEXT = &HC5' limit the text that can be typed in ListView's item to 10 charactersPrivate Sub ListView1_BeforeLabelEdit(Cancel As Integer) Dim editHWnd As Long ' get the handle of the ListView's Edit control editHWnd = SendMessage(ListView1.hWnd, LVM_GETEDITCONTROL, 0, ByVal 0&) ' send it a EM_LIMITTEXT message to limit its length SendMessage editHWnd, EM_LIMITTEXT, 10, 0End Sub
Once you now the method you can perform some other tricks with the Edit control. For example, you can automatically convert all text to uppercase:
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal _ hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, _ lParam As Any) As LongPrivate Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _ (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As LongPrivate Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" _ (ByVal hWnd As Long, ByVal nIndex As Long) As LongPrivate Const GWL_STYLE = (-16)Const LVM_FIRST = &H1000Const LVM_GETEDITCONTROL = (LVM_FIRST + 24)Const ES_UPPERCASE = &H8&' force the text typed in a ListView's node to uppercasePrivate Sub ListView1_BeforeLabelEdit(Cancel As Integer) Dim editHWnd As Long ' get the handle of the ListView's Edit control editHWnd = SendMessage(ListView1.hWnd, LVM_GETEDITCONTROL, 0, ByVal 0&) ' force the all-uppercase style SetWindowLong editHWnd, GWL_STYLE, GetWindowLong(editHWnd, _ GWL_STYLE) Or ES_UPPERCASEEnd Sub