基本思路
用系统函数SHGetFileInfo获得文件信息,如图标、大小、更新日期等,放入TreeView控件
SHGetFileInfo如下:
/// <summary> 返回系统设置的图标 </summary>
/// <param name="pszPath">文件路径 如果为"" 返回文件夹的</param>
/// <param name="dwFileAttributes">0</param>
/// <param name="psfi">结构体</param>
/// <param name="cbSizeFileInfo">结构体大小</param>
/// <param name="uFlags">枚举类型</param>
/// <returns>-1失败</returns>
[DllImport("shell32.dll")]
public static extern IntPtr SHGetFileInfo(string pszPath, uint dwFileAttributes, ref SHFILEINFO psfi, uint cbSizeFileInfo, uint uFlags);
public System.Drawing.Icon GetSystemInfoIcon(string path)
{
SHFILEINFO _SHFILEINFO = new SHFILEINFO();
IntPtr _IconIntPtr = SHGetFileInfo(path, 0, ref _SHFILEINFO, (uint)Marshal.SizeOf(_SHFILEINFO), (uint)(SHGFI.SHGFI_ICON | SHGFI.SHGFI_LARGEICON));
if (_IconIntPtr.Equals(IntPtr.Zero)) return null;
System.Drawing.Icon _Icon = System.Drawing.Icon.FromHandle(_SHFILEINFO.hIcon);
return _Icon;
}
刷新内容
CurrentPath变化触发PropertyChangedCallback