用SHGetFileInfo添加图标到imagelist中.为什么添加到第16个就出错?
困扰几天的问题了.. 经过反复测试和另外单独测试.
最终结果是,不管怎么用.只要imagelist一共有16个图标了..
在listview 中一调用第16个图标..(索引数值为:15) 就提示:
“System.ArgumentOutOfRangeException”类型的未经处理的异常出现在 System.Windows.Forms.dll 中。
其他信息: InvalidArgument=“15”的值对于“StateImageIndex”无效。
Private Function addicon(ByVal filename As String, ByVal classname As String, ByVal hname As String) As Integer Dim ico As Icon Dim shfi_large As New shfileinfo Dim otexts(-1) As String Dim i As Integer = 0 otexts = Split(filename, ",") If (otexts.Length > 0 And filename <> "") Then If (FileLen(otexts(0)) > 0) Then ' 如果文件存在 If (otexts.Length = 2) Then If (otexts(1) = "%1") Then i = 0 Else i = otexts(1) End If End If If (i < 0 Or i > 255) Then i = 0 ListView1.StateImageList = ImageList1 ListView1.StateImageList = ImageList1 SHGetFileInfo(otexts(0), i, shfi_large, Marshal.SizeOf(shfi_large), shgfi_largeicon Or shgfi_icon) ico = Icon.FromHandle(shfi_large.hIcon) Application.DoEvents() ImageList1.Images.Add(ico) Application.DoEvents() Application.DoEvents() Return ImageList1.Images.Count - 1 End If End If Return -1 End Function ' 如果失败则返回1