Determine Which ListView Column Was Checked

Determine Which ListView Column Was Checked

When using the ListView control in list mode (Listview.View = lvwList), no property indicates which column the user clicked on within the selected row. The ListView’s HitTest method returns only a reference to the ListItem the user clicked on, not the specific subitem. Use the SendMessage API function in the ListView’s MouseUp or MouseDown event to provide this information:

 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 Const LVM_SUBITEMHITTEST As Long = 4153Private Type POINTAPI	X As Long	Y As LongEnd TypePrivate Type LVHITTESTINFO	pt As POINTAPI	lngFlags As Long	lngItem As Long	lngSubItem As LongEnd TypePrivate Sub ListView1_MouseUp(Button As Integer, _	Shift As Integer, X As Single, Y As Single)	Dim hti As LVHITTESTINFO	Dim lngRet As Long = X / Screen.TwipsPerPixelX = Y / Screen.TwipsPerPixelY	lngRet = SendMessage(ListView1.hWnd, _		LVM_SUBITEMHITTEST, 0&, hti)	Debug.Print "Row=" & hti.lngItem,	Debug.Print "Col=" & hti.lngSubItemEnd Sub
See also  Does It Make Sense to Splurge on a Laptop?

About Our Editorial Process

At DevX, we’re dedicated to tech entrepreneurship. Our team closely follows industry shifts, new products, AI breakthroughs, technology trends, and funding announcements. Articles undergo thorough editing to ensure accuracy and clarity, reflecting DevX’s style and supporting entrepreneurs in the tech sphere.

See our full editorial policy.

About Our Journalist