WinForm自动加载图标

   public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }
    

        private void Form2_Load(object sender, EventArgs e)
        {
            foreach (string s in Enum.GetNames(typeof(View)))
            {
                contextMenuStrip1.Items.Add(s).Click += Clicks;
            }
        }

        void Clicks(object sender, EventArgs e)
        {
            listView1.View = (View)Enum.Parse(typeof(View), ((ToolStripMenuItem)sender).Text);
        }

        private void button1_Click(object sender, EventArgs e)
        {
            int nIndex = 0;
            listView1.Items.Clear();
            SHFILEINFO shinfo = new SHFILEINFO();
            listView1.SmallImageList = imageList1;
            listView1.LargeImageList = imageList2;
            if (folderBrowserDialog1 .ShowDialog() == DialogResult.OK)
            {
                string path =this.folderBrowserDialog1 .SelectedPath;
                foreach (string file in Directory.GetFiles(path))
                {
                    Win32.SHGetFileInfo(file, 0, ref shinfo, (uint)Marshal.SizeOf(shinfo), Win32.SHGFI_ICON | Win32.SHGFI_SMALLICON);
                    Icon myIcon = Icon.FromHandle(shinfo.hIcon);
                    imageList1.Images.Add(myIcon);
                    Win32.SHGetFileInfo(file, 0, ref shinfo, (uint)Marshal.SizeOf(shinfo), Win32.SHGFI_ICON | Win32.SHGFI_LARGEICON);
                    myIcon = Icon.FromHandle(shinfo.hIcon);
                    imageList2.Images.Add(myIcon);
                    listView1.Items.Add(Path.GetFileNameWithoutExtension (file), nIndex++);
                }
            }
        }     
    }

    [StructLayout(LayoutKind.Sequential)]
    public struct SHFILEINFO
    {
        public IntPtr hIcon;
        public IntPtr iIcon;
        public uint dwAttributes;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szDisplayName;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 80)]
        public string szTypeName;
    }

    class Win32
    {
        public const uint SHGFI_ICON = 0x100;
        public const uint SHGFI_LARGEICON = 0x0; // 'Large icon
        public const uint SHGFI_SMALLICON = 0x1; // 'Small icon
        [DllImport("shell32.dll")]
        public static extern IntPtr SHGetFileInfo(string pszPath, uint dwFileAttributes, ref SHFILEINFO psfi, uint cbSizeFileInfo, uint uFlags);
    }

上一篇‡: WinForm无标题栏窗体的鼠标拖动效果

下一篇‡: 一些SQL语句(备忘)

最近回复