private void SetSortIcon(int columnIndex, SortOrder order) { IntPtr columnHeader = NativeMethods.SendMessage(base.Handle, 4127, IntPtr.Zero, IntPtr.Zero); for (int columnNumber = 0; columnNumber <= base.Columns.Count - 1; columnNumber++) { IntPtr columnPtr = new IntPtr(columnNumber); NativeMethods.LVCOLUMN lvColumn = default(NativeMethods.LVCOLUMN); lvColumn.mask = 4; NativeMethods.SendMessage(columnHeader, 4619, columnPtr, ref lvColumn); if (order != SortOrder.None && columnNumber == columnIndex) { switch (order) { case SortOrder.Ascending: lvColumn.fmt &= -513; lvColumn.fmt |= 1024; break; case SortOrder.Descending: lvColumn.fmt &= -1025; lvColumn.fmt |= 512; break; } } else { lvColumn.fmt &= -1537; } NativeMethods.SendMessage(columnHeader, 4620, columnPtr, ref lvColumn); } }
public static extern IntPtr SendMessage(IntPtr hWnd, int Msg, IntPtr wParam, ref NativeMethods.LVCOLUMN lPLVCOLUMN);