private static extern void GetSortColumns(IShellView view, int index, out SORTCOLUMN sc);
/// <summary> /// Sets the column in which will be sorted /// </summary> /// <param name="pk">The propertykey list that identifies columns</param> /// <param name="Order">The sort order list</param> public void SetSortCollumn(List<PROPERTYKEY> pk, List<SORT> Order) { SORTCOLUMN[] scl = new SORTCOLUMN[pk.Count]; IFolderView2 ifv2 = GetFolderView2(); for (int i = 0; i < pk.Count; i++) { SORTCOLUMN sc = new SORTCOLUMN(); sc.propkey = pk[i]; sc.direction = Order[i]; scl[i] = sc; } SetSortColumns(ifv2, pk.Count, scl); }
public void GetSortColInfo(out SORTCOLUMN ci) { try { IFolderView2 ifv2 = GetFolderView2(); SORTCOLUMN sc = new SORTCOLUMN(); int SortColsCount = -1; ifv2.GetSortColumnCount(out SortColsCount); if (SortColsCount > 0) { GetSortColumns(GetShellView(), 0, out sc); } //SORTCOLUMN newsc = (SORTCOLUMN)Marshal.PtrToStructure(scptr, typeof(SORTCOLUMN)); ci = sc; //Marshal.FreeHGlobal(scptr); } catch (Exception) { SORTCOLUMN sc = new SORTCOLUMN(); ci = sc; } }
/// <summary> /// Sets the column in which will be sorted /// </summary> /// <param name="pk">The propertykey that identifies column</param> /// <param name="Order">The sort order</param> public void SetSortCollumn(PROPERTYKEY pk, SORT Order) { IFolderView2 ifv2 = GetFolderView2(); SORTCOLUMN sc = new SORTCOLUMN(); sc.propkey = pk; sc.direction = Order; IntPtr scptr = Marshal.AllocHGlobal(Marshal.SizeOf(sc)); Marshal.StructureToPtr(sc, scptr, false); ifv2.SetSortColumns(scptr, 1); Marshal.FreeHGlobal(scptr); }