private static void ListViewMouseDown(object sender, MouseEventArgs e) { if (sender is ListView listview) { LvHittestInfo lvHitInfo = new LvHittestInfo(); Point p = new Point(e.X, e.Y); lvHitInfo.pt = p; try { int id = SendMessage(listview.Handle, 0x1000 + 18, -1, ref lvHitInfo); if (e.Button == MouseButtons.Right) { InvokeRightClick(listview, id); } else if (e.Button == MouseButtons.Left && lvHitInfo.flags == 0x50000000) { ToggleGroupCollapseState(listview.Handle, id); } } catch (Exception ex) { Trace.WriteLine(ex.Message + Environment.NewLine + ex.StackTrace); } } }
static extern int SendMessage(IntPtr window, int message, int wParam, ref LvHittestInfo lParam);