收录日期:2019/03/26 02:59:32 时间: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) = "\","","\")+你的路径

帮忙看一下,这个SQL怎么实现!。。 谢谢~~ 求解平衡点问题(数组 集合方面)???????????????? 一个asp访问web service的问题 C#的webform中的button弹出确认对话框 请大家帮我看看哪错了,谢谢! 请问利用AJAX怎样把DataSet的内容填充到GridView里去 (多用户)插入记录后,如何获取该记录的ID(自增) 【调查】大家目前使用的VS版本都是什么?请跟帖!谢谢! 【新闻头条】泰国警察与示威者在机场对峙 菜鸟求救datalist主细表查询 C#编译问题 expected class delegate enum interface or struct drawtext 怎么无效? 请问s3c2410中addr0,addr1,addr2,addr3,addr4等地址线怎么操作 子线程、事件和窗体访问的问题 【请教】Unicode的DLL和Multi Byte的DLL内存空间上区别在哪里? 做C++,爽吗? javamail 发送邮件 Asp.net开发的web应用到底能不能调用ocx组件? 给datagridview添加的按钮列怎么设置每个按钮上显示的文字? 在B/S系统中是如何管理事务的? 急,,,如何引用JQuery代码的js文件 怎么用程序批量生成汉字到数据库 一个关于使用CArray模板的错误:error C2512: \'CPoint\' : no appropriate default constructor available,请指点!!! 怎样按照两列的标准进行分组 关于怎样实现两地之间列车的查询 treeview节点复制粘贴 怎样通过客户端直接在HTTP服务器上建立目录. 怪了,怎么解决? 新人提问(处女贴,100分) ORACLE 创建存储过程