收录日期:2019/05/21 01:15:22 时间:2016/05/31 07:16:03 标签:VB基础类
我编了2个窗体,frmFile和frmPic
'=================frmfile================
......
Private Sub cmdOK_Click()
    If File1.ListCount = 0 Then
        i = 0
    Else
        i = 1
    End If
    frmPic.File1.Path = frmFile.File1.Path
    frmPic.txt3.Text = "当前文件夹:" & Dir1.Path
    frmPic.txt2.Text = "共 " & File1.ListCount & " 张," & "第 " & i & " 张"
    Unload Me
End Sub

'设置
Private Sub Drive1_Change()
    Dir1.Path = Drive1.Drive
End Sub

Private Sub Dir1_Change()
    File1.Path = Dir1.Path
End Sub

'=================frmPic======================
'加载图片
Private Sub File1_Click()
Dim i As Integer
    i = File1.ListIndex + 1
    txt2.Text = "共 " & File1.ListCount & " 张," & "第 " & i & " 张"
    Pic.Picture = LoadPicture(frmFile.Dir1.Path & "\" & File1.List(File1.ListIndex))
    'Pic.Picture = LoadPicture("")
End Sub

上面的这段程序在第一次加载的时候,能正确显示图片,如“d:\...\1.gif”
第二次加载的时候,显示错误,说什么“d:\...\2.gif”不能打开
而我第二次加载的明明是其他路径下的2.gif,也就是路径还是第一次的,怎么回事啊?

还有,FileListBox每次打开程序都显示当前路径下的图片,怎么让他第一次启动的时候,不显示呢?
怎么没人帮帮忙呢?
高手快来看看呀,急死我了,人命关天啊。分不够,你跟我说,我可以给你!!!
跟踪一下看路径中是否出现了非法字符,如\\等
1.可能是路徑不對的﹐你單步跟蹤一下就知道了

2.你換用另外一個控件試一試﹐用ImageBox控件
1\ Pic.Picture = LoadPicture(frmFile.Dir1.Path & "\" & File1.List(File1.ListIndex))
这样加载没有问题,是不是GIF的问题?是路徑不對??
不是GIF的问题,我在一个窗体调试完全没有问题!
frmFile.Dir1.Path & "\" &frmFile. File1.List(frmFile.File1.ListIndex)
应该是上面那样吧
Dim i As Integer 放到通用段。否则每次在过程中重建,初始值都是 0,加 1 之后永远是 1。
应该不是图片的问题,是路径的问题.有可能是根目录下的路径会有"\\"出现.

楼主可以将要装入的图片的路径打印出来看一下.
debug.print frmFile.Dir1.Path & "\" & File1.List(File1.ListIndex)

看一下上面打印出什么来
up
UP.........
不是“//”或图片的问题。
问题已找到,就是不知道怎么处理。
我单步跟踪过了,每次启动程序,在fileFile窗体选择好盘符和文件夹后,cmdOK事件,在另一窗体frmPic里txt3.text能正确显示“当前文件夹:盘符:/路径”。
可当我在frmPic的FileListBox里的图片文件选择时(File1_click()),系统报错,错误‘53’,文件:“盘符:/路径/*.gif不存在”。而此时的路径和盘符并未改变,还是我第一次的盘符和路径。
LoadPicture()我也查了好几次手册,应该没什么错。
奇怪的是,为什么第一次的cmdOK能把路径传过来显示;第二次,选择图片显示的时候,路径就变不了了呢?还有,程序启动的时候总显示当前路径下的图片。(patten属性为"*.bmp;*.jpg;*.gif")
难道是PictureBox的某项属性没设置正确?
如果是选择根目录下的文件,你的程序就错了.
比如选择"C:\ABC.JPG"
你的程序就会得到"C:\\ABC.JPG"
程序在选择任何路径下的文件时,都能在FileListBox里显示图片文件,无论是什么目录。可我触发FileListBox的click事件时,想在PictureBox里显示的时候,只有一种情况是成功的:就是在一个特定的路径下,此路径恰恰是我程序启动时候的路径。而其他路径下的图片就不能在PictureBox里加载,显示错误“53”。
你先用最简单的代码测试一下.(新建一个工程来测试)

Private Sub Command1_Click()
Pic.Picture = LoadPicture(frmFile.Dir1.Path & "\" & File1.List(File1.ListIndex))
End Sub

Private Sub Drive1_Change()
    Dir1.Path = Drive1.Drive
End Sub

Private Sub Dir1_Change()
    File1.Path = Dir1.Path
End Sub
楼上的意思就是我想说的,不知道怎么回事。感觉VB在易用性上比其他语言还是挺强的,就是感觉VB编程都是调用API/ActiveX控件,操作上比较机械,一般错误也挺怪的。都是什么函数调用,属性设置出的错,感觉就是被MS牵着鼻子走,胸闷啊~~~~~
借问一下:
--------------------------------------------------
“如果是选择根目录下的文件,你的程序就错了.
比如选择"C:\ABC.JPG"
你的程序就会得到"C:\\ABC.JPG"”
--------------------------------------------------
如何在选择根目录时,不会出现"\\"呀?
text1.text=dir1.path & "\"
这样的话,如果是根目录就会出现两个“\”,如何解决呀?
你的程序的确有问题的。如果不改变你编程的思路,仅修改其中的错误,你将'=================frmfile================
......
Private Sub cmdOK_Click()
     .....
    frmPic.txt2.Text = "共 " & File1.ListCount & " 张," & "第 " & i & " 张"
    Unload Me
End Sub
中的Unload me改为me.hide即可。因为当你卸载了窗口后,再从另一个窗口访问它的控件时,其值又被初始化了。因此你不可以卸载它,只需隐藏即可。在程序全部结束后再卸载它。

你试试,一定可以的。
问题已解决,确实是songyaowu(韧恒) 所说的那样,在OK_Click()里,Unload Me把窗体卸了之前传了路径,所以这时的路径传递正确;卸了后路径不变了,所以另一个窗体老加载不了。
结贴了,谢谢各位大哥的帮助。
To:lujianyu1189()
......
iif(right(dir1.path,1) = "\","","\")+你的路径

FM1182DriverError-多多帮助 关于整型转换问题 全分相送,求听一段背景音乐的歌词。 水晶报表问题求助~~~谢谢~~~@@@@!!!! 怎么样象excel一样冻结list(100分) 新手问用ODBC连接的问题 下了个petshop4,想研究,但不会弄,怎么办 AMD是出了K10吧,会不会用在奥运村运动员网吧里? order by 中运算后排序? 几道JAVA的基础题,请大家帮帮忙!谢谢!!救命题!!!  在哪里找“添加至构建路径”这个命令? find fuqd273(寻找 fuqd273) 【求助】Oracle用jdbc连不上了 听说鸟儿要为赌徒献身,支持的顶,,,BS小梁放高利贷的也顶,,,BS蛋贴的就不用顶了,,, ADO中怎样得到一个Recordset中的记录数? 急,高手帮看看这个,在线等啊 导出部分区域到Excel 世界500强企业诚聘SDE/SDET/SDET LEAD 这种效果是怎么做出来的啊????????????????????????????????????? 世界500强企业诚聘SOC engineer/PL ACTIVEX控件问题 高手帮忙把这个JAVA的代码转换成C#的,在线等,急用! 吧tomcat中的work中的东西删掉报错误 周末散分 在用.net 2005编写聊天对话框时出现的问题 菜鸟求助!!VB。NET连接数据库问题!! tomcat报错:Servlet.service() for servlet action threw exception,请大虾帮忙看看 关于上传附件类型的判断 mysql数据库,不同服务器(内网)间的不同数据库的联合查询