public static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, UInt32 wParam, ref HDITEM lParam);
private void SetColumnSortMark(SortOrder sortOrder, int columnIndex) { // Get HWND of Header control. IntPtr hHeader = User32.SendMessage( _lvwFiles.Handle, (UInt32)SysListView32.LVM_GETHEADER, 0, 0); // Initialize HDITEM. Retrieve `HDITEM.fmt' field only. HDITEM hdi = new HDITEM(); hdi.mask = (uint)HDItemFlags.HDI_FORMAT; User32.SendMessage(hHeader, (UInt32)SysHeader32.HDM_GETITEMW, (UInt32)columnIndex, ref hdi); // Apply sorting arrow indicator flag to `HDITEM.fmt' field. hdi.mask = (uint)HDItemFlags.HDI_FORMAT; switch (sortOrder) { case SortOrder.Ascending: hdi.fmt |= (int)HDItemFormat.HDF_SORTUP; break; case SortOrder.Descending: hdi.fmt |= (int)HDItemFormat.HDF_SORTDOWN; break; case SortOrder.None: hdi.fmt &= ~(int)(HDItemFormat.HDF_SORTUP | HDItemFormat.HDF_SORTDOWN); break; } // Update column's format. User32.SendMessage(hHeader, (UInt32)SysHeader32.HDM_SETITEMW, (UInt32)columnIndex, ref hdi); }