我是个新手。我使用下面API函数来对图片进行删除。图片是删除放到了回收站但是为什么在屏幕上的图片却还在呢?点击上一张或是下一张再回来图片又不见了但是此图片的路径和占用的空间还是存在除非重新打开工程。
如何解决此问题?Private Declare Function SHFileOperation Lib "shell32.dll" Alias _
"SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long
Private Type SHFILEOPSTRUCT
hwnd As Long
wFunc As Long
pFrom As String
pTo As String
fFlags As Integer
fAnyOperationsAborted As Boolean
hNameMappings As Long
lpszProgressTitle As String
End Type
Private Const FO_DELETE = &H3
Private Const FOF_ALLOWUNDO = &H40
Private Sub fileDelete_Click()
Dim FileOperation As SHFILEOPSTRUCT
Dim lReturn As Long
Dim filepath As String
filepath = frmForm.Caption
filepath = filepath & vbNullChar & vbNullChar
With FileOperation
.hwnd = Me.hwnd
.wFunc = FO_DELETE
.pFrom = filepath
.pTo = vbNullChar ' Not used
.fFlags = FOF_ALLOWUNDO
.lpszProgressTitle = "文件正在删除"
End With
lReturn = SHFileOperation(FileOperation)
If lReturn = 0 Then
MsgBox "删除成功!"
End If
Picture2.AutoRedraw = True
Picture2.Cls
End Sub
如何解决此问题?Private Declare Function SHFileOperation Lib "shell32.dll" Alias _
"SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long
Private Type SHFILEOPSTRUCT
hwnd As Long
wFunc As Long
pFrom As String
pTo As String
fFlags As Integer
fAnyOperationsAborted As Boolean
hNameMappings As Long
lpszProgressTitle As String
End Type
Private Const FO_DELETE = &H3
Private Const FOF_ALLOWUNDO = &H40
Private Sub fileDelete_Click()
Dim FileOperation As SHFILEOPSTRUCT
Dim lReturn As Long
Dim filepath As String
filepath = frmForm.Caption
filepath = filepath & vbNullChar & vbNullChar
With FileOperation
.hwnd = Me.hwnd
.wFunc = FO_DELETE
.pFrom = filepath
.pTo = vbNullChar ' Not used
.fFlags = FOF_ALLOWUNDO
.lpszProgressTitle = "文件正在删除"
End With
lReturn = SHFileOperation(FileOperation)
If lReturn = 0 Then
MsgBox "删除成功!"
End If
Picture2.AutoRedraw = True
Picture2.Cls
End Sub
解决方案 »
- 使用windowsmediaplayer控件,设置播放文件后,如何清空播放列表?
- VB中如何把文件存入数据库,然后下载到本地存为文件
- 求:mdi窗口中第二次调用同一窗口Initialize的事件为何没有反映
- 有没有比String更长一点的数据类型呢?
- 急!请问有没有很好的VB反编译工具?
- 可能是老问题大家别见笑哟!jiet4.0中带不带foxpro地驱动?
- 请各路高手帮忙!--如何限制*.log日志文件的纪录数?
- 急,关于SERVER,在线等待,及时结分,100分请救。。。。。。。。。
- 有什么方法可以把 文字 倒过来显示..
- 这句是什么意思啊 ??求解释 MSComm1.Output = "e#"
- 请问如何可以让vb打开的图片不会超过image的框(我的图片打开在image中)源代码如下,请帮我修改
- Append添加一个字段时的字段类型的设置问题!
如果在picturebox设置的图片地址,那么图片会保存到frx里
set "变量"=noting //我用ADO释放集录时这么用,不知这里行不行
Picture2.Picture = Nothing
当我点击浏览上一张或是下一张图片再返回的时候图片不存在但是他还是占用了一个空间而且文件名还是在的”这个问题没解决
====================================================================
何以见得“还是占用了一定的空间”?是指硬盘上还有该文件吗?那么你能在资源管理器中打开该文件吗?
“图片是删除不见了”是指Picture2上的图片不见了吗?难道是说,在硬盘中有这个文件,但只是个0字节的空文件?
但是我用picture.cls来刷新这样是不是不能成功呢
Cls 方法
清除运行时 Form 或 PictureBox 所生成的图形和文本。语法object.Clsobject 所在处代表一个对象表达式,其值为“应用于”列表中的一个对象。如果省略 object,则带有焦点的 Form 就被认为是 object。说明Cls 将清除图形和打印语句在运行时所产生的文本和图形,而设计时在 Form 中使用 Picture 属性设置的背景位图和放置的控件不受 Cls 影响。如果激活 Cls 之前 AutoRedraw 属性设置为 False, 调用时该属性设置为 True,则放置在 Form 或 PictureBox 中的图形和文本也不受影响。 这就是说,通过对正在处理的对象的 AutoRedraw 属性进行操作,可以保持 Form 或 PictureBox 中的图形和文本。调用 Cls 之后,object 的 CurrentX 和 CurrentY 属性复位为 0。
Cls 方法示例
本示例使用 Cls 方法从一个窗体中删除打印信息。要检验此示例,可将本例代码粘贴到一个窗体的声明部分,然后按 F5 并单击该窗体。Private Sub Form_Click ()
Dim Msg ' 声明变量。
AutoRedraw = -1 ' 打开 AutoRedraw。
ForeColor = QBColor(15) ' 将前景设置为白色。
BackColor = QBColor(1) ' 将背景设置为蓝色。
FillStyle = 7 ' 设置对角线菱形。
Line (0, 0)-(ScaleWidth, ScaleHeight), , B ' 将框放在窗体上。
Msg = "This is information printed on the form background."
CurrentX = ScaleWidth / 2 - TextWidth(Msg) / 2 ' 设置 X 的位置。
CurrentY = 2 * TextHeight(Msg) ' 设置 Y 的位置。
Print Msg ' 打印信息至窗体。
Msg = "Choose OK to clear the information and background "
Msg = Msg & "pattern just displayed on the form."
MsgBox Msg ' 显示信息。
Cls ' 清除窗体的背景。
End Sub