. NET 技术讨论

学于明志,交流增加见识,讨论改变思维
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
在winForm下编程时,做资源管理器浏览本地文件的时候,用ListView控件加载文件,
可以根据文件类型来判断item的图标,具体代码如下:
  1using System;
  2using System.Drawing;
  3using System.Windows.Forms;
  4
  5namespace YJDSoft.Control.Data.LocalDataExplorer
  6{
  7    /// <summary>
  8    /// ImageIconManage 的摘要说明。
  9    /// </summary>

 10    public class ImageIconManage
 11    {
 12        private System.Windows.Forms.ImageList   m_SmallImageList;
 13        private System.Windows.Forms.ImageList   m_LargeImageList;
 14        //private System.IntPtr  m_FormHandle;
 15        private int IconIndex = 0 ;
 16        /// <summary>
 17        /// 图表管理类
 18        /// </summary>
 19        /// <param name="SmallImageList">小图标集合的list</param>
 20        /// <param name="LargeImageList">大图标集合的list</param>

 21        public ImageIconManage(System.Windows.Forms.ImageList SmallImageList,System.Windows.Forms.ImageList LargeImageList)
 22        {
 23            //
 24            // TODO: 在此处添加构造函数逻辑
 25            //
 26            m_SmallImageList = SmallImageList;
 27            m_LargeImageList = LargeImageList;
 28            //m_FormHandle = FormHandle;
 29            m_LargeImageList.ImageSize = new Size(32,32);
 30
 31            this.m_LargeImageList.Images.Clear();
 32            this.m_SmallImageList.Images.Clear();
 33            Icon ic0=myExtractIcon("%SystemRoot%\\system32\\shell32.dll",3);
 34            m_LargeImageList.Images.Add(ic0);
 35            m_SmallImageList.Images.Add(ic0);
 36        }

 37        /// <summary>
 38        /// 得到该文件对应的图标(包括大图标,小图标)
 39        /// </summary>
 40        /// <param name="FileNameOrExtension">文件的全路径或者文件的带点扩展名(如: .Dll)</param>
 41        /// <returns>返回该文件或扩展名的图标在SmallImageList或LargeImageList里的索引值</returns>

 42        public int FileBindingIcon(string FileNameOrExtension)
 43        {
 44            try
 45            {
 46                SetIcon(m_SmallImageList,FileNameOrExtension,false);//得到小图标平铺
 47                SetIcon(m_LargeImageList,FileNameOrExtension,true);//得到大图标平铺
 48                return IconIndex = IconIndex + 1;
 49            }

 50            catch(Exception ex)
 51            {
 52                MessageBox.Show(ex.Message,"错误提示",0,MessageBoxIcon.Error);
 53                return -1;
 54            }

 55        }

 56        /// <summary>
 57        /// 得的目录的图标的索引值
 58        /// </summary>

 59        public int GetFolderIcon
 60        {
 61            get
 62            {
 63                return 0;        //目录图标的索引值默认为0
 64            }

 65        }

 66
 67        用API函数调用取的文件对应的图标的所有方法
139
140    }

141}

142