社区
C#
帖子详情
listview显示文件数目有限制吗?
shuimuyi
2007-04-02 12:01:03
用treeview 和listview做的资源管理器
在treeview上双击树接点,打开一个文件夹的时候,当该文件夹下有很多.doc文件(2544个,共36.6 MB),要显示在listview中,这个时候加载显示抛出异常。请问各位这个异常该怎么解决才好呢?
听说是listview打开数量有限制 ,可能吧。具体不知道,所以来问下各位。谢谢了。
...全文
401
12
打赏
收藏
listview显示文件数目有限制吗?
用treeview 和listview做的资源管理器 在treeview上双击树接点,打开一个文件夹的时候,当该文件夹下有很多.doc文件(2544个,共36.6 MB),要显示在listview中,这个时候加载显示抛出异常。请问各位这个异常该怎么解决才好呢? 听说是listview打开数量有限制 ,可能吧。具体不知道,所以来问下各位。谢谢了。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
shuimuyi
2007-04-04
打赏
举报
回复
没有遇到没有图标句柄的文件。
FromHandle()和SHGetFileInfo()参数是有效的。
可能 读文件超时,可是 不知道该如何测试这个。
shuimuyi
2007-04-04
打赏
举报
回复
来通知下热心的朋友们。该问题总算是被处理掉了,可以松了口气了。
原来放在
DestroyIcon(fi.hIcon); // Cleanup
imageList.Images.Add(ic); //添加到ImageList,可放图标和图片,只做一个转换用
继续抛异常。
现在换为:
Icon ic=Icon.FromHandle(fi.hIcon);
imageList.Images.Add(ic); //添加到ImageList,可放图标和图片,只做一个转换用
DestroyIcon(fi.hIcon); // Cleanup
总算一切平安了。
shuimuyi
2007-04-04
打赏
举报
回复
LisrimageList.Images.Add(ic0);
LisrimageList2.Images.Add(ic0);
DestroyIcon(ic0.Handle); // 在这个地方新添加了 释放icon句柄的代码 异常仍然存在
listView1.Clear();
shoushii
2007-04-03
打赏
举报
回复
估计是读文件超时吧!
曲滨_銘龘鶽
2007-04-03
打赏
举报
回复
这个错误应该是 SHFILEINFO 就是错误的
是不是你遇到了没有图标句柄的,文件了
也就是说之前的 api 取得的
Icon.FromHandle(fi.hIcon);
这行出的错误,和 treeview 什么的一点关系也没有
出错的时候看看,fi 里面的其他信息是否都正常!
spkl1
2007-04-03
打赏
举报
回复
检查下FromHandle()和SHGetFileInfo()
参数是否有效
bitpolar
2007-04-02
打赏
举报
回复
这个异常应该不是因为数量引起的
貌似以前加载的数量比这个多的多
把你的异常详细信息贴出来把
shuimuyi
2007-04-02
打赏
举报
回复
按一个同仁的相同的异常开帖问题解决方法:
protected virtual Icon myExtractIcon(string FileName,int iIndex)
{
try
{
IntPtr hIcon=(IntPtr)ExtractIcon(this.Handle,FileName,iIndex);
if(! hIcon.Equals(null))
{
Icon icon=Icon.FromHandle(hIcon);
return icon;
}
}
catch(Exception ex)
{ MessageBox.Show(ex.Message,"1错误提示",0,MessageBoxIcon.Error);}
return null;
}
用if(hIcon != System.IntPtr.Zero) 替换 if(! hIcon.Equals(null)) 无作用。
shuimuyi
2007-04-02
打赏
举报
回复
刚刚用了一个简单版的测试了下。bug如下:
protected virtual void SetIcon(ImageList imageList,string FileName,bool tf)
{
SHFILEINFO fi=new SHFILEINFO();
if(tf==true)
{
int iTotal=(int)SHGetFileInfo(FileName,0,ref fi,100, 16640); //SHGFI_ICON|SHGFI_SMALLICON
try
{
if(iTotal >0)
{
Icon ic=Icon.FromHandle(fi.hIcon);
imageList.Images.Add(ic);
}
}
catch(Exception ex)
{ MessageBox.Show(ex.Message,"2错误提示",0,MessageBoxIcon.Error);}
}
else
{
int iTotal=(int)SHGetFileInfo(FileName,0,ref fi,100, 257);
try
{
if(iTotal >0)
{
Icon ic=Icon.FromHandle(fi.hIcon);
imageList.Images.Add(ic);
}
}
catch(Exception ex)
{ MessageBox.Show(ex.Message,"3错误提示",0,MessageBoxIcon.Error);}
}
}
异常信息:
传递到icon的win32句柄无效或者类型错误。
bitpolar
2007-04-02
打赏
举报
回复
加载之前先BeginUpdate
结束之后EndUpdate
shuimuyi
2007-04-02
打赏
举报
回复
谢谢FlashElf(銘龘鶽)提醒。知道了。
没帖代码的原因是,在treeview中打开其他的文件夹都没问题。只有打开这个大文件夹才出现异常。虽然抛异常,在listview中还是可以看到该文件夹下的文件的,加载很慢。
曲滨_銘龘鶽
2007-04-02
打赏
举报
回复
treeview 和listview 有限制不过很大
可能是 int32 的最大值
不过一般没等到那个数字,你就没内存了
CSDN 这地方帖子象洪水一样,如果问问题
最好写的详细点。
这样也好回答,要不下次谁还来找你这个贴。
Java插入排序(思路及实现)
Java数组排序——插入排序(Insertion Sort)思路及实现 1、概念及其介绍: 插入排序(InsertionSort),一般也被称为直接插入排序。对于少量元素的排序,他是一个有效的算法。 2、思路: 它的基本思路是将一个记录插入到已经排序好的有序表中,从而得到一个新的、记录增加1的有序表。在实现过程中使用双层循环,外层循环对除了第一个元素之外的所有元素,内层循环对当前元素前面有序表进行待插入位置查找,进行移动。 3、适用说明: 插入排序的平均时间复杂度是O(n2),空间复杂度为常数阶
插入排序(Insertsort)之Java实现
插入排序算法介绍 排序算法是最简单的算法,也是最基本的算法。顾名思义,插入排序就是把当前待排序的元素插入到一个已经排好序的列表里面。 一个非常形象的例子就是右手抓取一张扑克牌,并把它插入左手拿着的排好序的扑克里面。插入排序的最坏运行时间是O(n2), 所以并不是最优的排序算法。特点是简单,不需要额外的存储空间,在元素少的时候工作得好。 插入排序算法Java实现 Java里面有很多数据类型,我
C/C++语言数据结构——插入排序InsertSort
详细解释插入排序的思路与实现,内附C和C++语言的代码实现,以及详细注释,由图文解释
算法 - InsertSort [插入排序]
#include<iostream> #include<cstring> using namespace std; //1,2,3,4,5,4.5 // k //插入排序 void insertsort(double a[],int k){ if(k==0) return ; insertsort(a,k-1); //对前k-1个元素排...
排序算法 -- 插入排序(InsertSort)
一、插入排序思想 插入排序(Insertion Sorting)的基本思想是:把 n 个待排序的元素看成为一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中包含有 n-1 个元素,排序过程中每次从无序表中取出第一个元素,把它的排序码依次与有序表元素的排序码进行比较,将它插入到有序表中的适当位置,使之成为新的有序表。 二、插入排序图示 三、java 编写代码 package point...
C#
111,129
社区成员
642,535
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章