public static void SetSortIcon(ListView listViewControl, int columnIndex, SortOrder order) { var hWnd = SendMessage(listViewControl.Handle, 0x101f, IntPtr.Zero, IntPtr.Zero); for (var i = 0; i <= (listViewControl.Columns.Count - 1); i++) { var wParam = new IntPtr(i); var lPlvcolumn = new Lvcolumn { mask = 4 }; SendMessageLVCOLUMN(hWnd, 0x120b, wParam, ref lPlvcolumn); if ((order != SortOrder.None) && (i == columnIndex)) { switch (order) { case SortOrder.Ascending: lPlvcolumn.fmt &= -513; lPlvcolumn.fmt |= 0x400; goto Label_00DE; case SortOrder.Descending: lPlvcolumn.fmt &= -1025; lPlvcolumn.fmt |= 0x200; goto Label_00DE; } } else { lPlvcolumn.fmt &= -0x601; } Label_00DE: SendMessageLVCOLUMN(hWnd, 0x120c, wParam, ref lPlvcolumn); } }
public static void SetSortIcon(ListView listViewControl, int columnIndex, SortOrder order) { var hWnd = SendMessage(listViewControl.Handle, 0x101f, IntPtr.Zero, IntPtr.Zero); for (var i = 0; i <= (listViewControl.Columns.Count - 1); i++) { var wParam = new IntPtr(i); var lPlvcolumn = new Lvcolumn {mask = 4}; SendMessageLVCOLUMN(hWnd, 0x120b, wParam, ref lPlvcolumn); if ((order != SortOrder.None) && (i == columnIndex)) { switch (order) { case SortOrder.Ascending: lPlvcolumn.fmt &= -513; lPlvcolumn.fmt |= 0x400; goto Label_00DE; case SortOrder.Descending: lPlvcolumn.fmt &= -1025; lPlvcolumn.fmt |= 0x200; goto Label_00DE; } } else { lPlvcolumn.fmt &= -0x601; } Label_00DE: SendMessageLVCOLUMN(hWnd, 0x120c, wParam, ref lPlvcolumn); } }
private static extern IntPtr SendMessageLVCOLUMN(IntPtr hWnd, int msg, IntPtr wParam, ref Lvcolumn lPlvcolumn);