社区
C#
帖子详情
listview显示文件数目有限制吗?
shuimuyi
2007-04-02 12:01:03
用treeview 和listview做的资源管理器
在treeview上双击树接点,打开一个文件夹的时候,当该文件夹下有很多.doc文件(2544个,共36.6 MB),要显示在listview中,这个时候加载显示抛出异常。请问各位这个异常该怎么解决才好呢?
听说是listview打开数量有限制 ,可能吧。具体不知道,所以来问下各位。谢谢了。
...全文
396
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 这地方帖子象洪水一样,如果问问题
最好写的详细点。
这样也好回答,要不下次谁还来找你这个贴。
易语言源码易语言超级表格自动完成源码
易语言源码易语言超级表格自动完成源码
【Python + 半导体】设备日志自动解析与异常提取工具
本资源提供半导体设备日志自动解析与异常提取的完整解决方案,适用于设备维护、故障诊断、日志审计等场景。
FH8A15G灯串闪灯IC.pdf
FH8A15G灯串闪灯IC
Build PDF translation backend and frontend (3).md
Build PDF translation backend and frontend (3).md
stm32单片机项目资料课程设计文档C语言程序代码原理图电路PCB实例AVR精简学习板DXP资料及其相关资料
stm32单片机项目资料课程设计文档C语言程序代码原理图电路PCB实例AVR精简学习板DXP资料及其相关资料
C#
111,131
社区成员
642,541
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章