VB中LIST控件的问题

在VB中搜索,把搜索出来的结果显示在LIST控件,再次搜索的时候把LIST用LIST1.CLEAR清除后,发现数据是清除了,但是还留有一条空白的信息,再次搜索结果就在空白ITEM下面添加,搜索次数多了的话,搜索的结果需要下拉才能见到。并不能说显示在控件的第一条。。
如果才能实现新搜索的结果在第一条显示?

另外,我在用FileCopy命令的时候,如果拷贝的数据多或者大的话,在拷贝过程未完成时,应用程序会导致假死,而且拷贝过程没有WINDOWS的那个文件复制进程条,应用程序不能操作,直到拷贝完成后才正常,不知道为什么会这样,有没有什么办法可以让拷贝时不会假死,或者拷贝时在后台进行,软件还能操作。

请大家帮帮我~~~谢谢!!
LIST控件的第一排列问题已经解决了~~~只要在ADDITEM时加上列数就可以了
现在剩下2个问题。1、就是上面说的FILECOPY的问题。
2、就是在用FILELISTBOX控件显示文件的时候如何实现双击时删除选定的文件?
谢谢~~~

栽培者你那个API进度函数不能调用啊。。我按你说的加了模块,但是在调用uCopyFile时提示BYREF参数类型不符合,去掉prgState后运行提示uCopyFile 参数不可选。。。不知道什么问题。。帮帮我~~谢谢

这个问题可以这样的解决:在vb6中调试通过。

1:首先在公共模块中:

Option Explicit

Public Const FO_MOVE = &H1
Public Const FO_COPY = &H2
Public Const FO_DELETE = &H3
Public Const FO_RENAME = &H4

Public Const FOF_NOCONFIRMATION = &H10
Public Const FOF_NOCONFIRMMKDIR = &H200
Public Const FOF_ALLOWUNDO = &H40

Type SHFILEOPSTRUCT
hWnd As Long
wFunc As Long
pFrom As String
pTo As String
fFlags As Integer
fAborted As Boolean
hNameMaps As Long
sProgress As String
End Type
Declare Function SHFileOperation Lib "shell32.dll" Alias "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long

其次:在frm模块之中:

Private Sub Command1_Click()
Dim SHFileOp As SHFILEOPSTRUCT
SHFileOp.wFunc = FO_COPY
SHFileOp.fAborted = True
SHFileOp.pFrom = "F:\MEM\*.*"
SHFileOp.pTo = "f:\aa"
SHFileOp.fFlags = FOF_ALLOWUNDO + FOF_NOCONFIRMATION
SHFileOperation SHFileOp

MsgBox "复制完成"

End Sub

注意:这是后台的一个拷贝,复制的过程当中软件还能操作,但是你要理解vb

的api函数的一些声明和用法,特别是SHFileOperation的用法。

2:FILELISTBOX控件显示文件的时候如何实现双击时删除选定的文件的解决:

在frm之中:一个listbox控件
Option Explicit

Private Const LB_ITEMFROMPOINT = &H1A9
Private Declare Function SendMessage Lib "user32"

Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal

wParam As Long, lParam As Any) As Long

Private Sub List1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

Dim pos As Long
dim idx As Long

pos = X / Screen.TwipsPerPixelX + Y / Screen.TwipsPerPixelY * 65536

idx = SendMessage(List1.hwnd, LB_ITEMFROMPOINT, 0, ByVal pos)

Kill List1.List(idx)

List1.Refresh

End Sub

注意:Kill List1.List(idx)‘这个地方有可能不会达到你的要求,如果要删

除文件,则你要写全文件的路径,即是:

kill "c:\aaa\" & List1.List(idx)

如果是只是不显示在list中,则只需:List1.RemoveItem (idx) 就可以了!

你可以试一试!!!
温馨提示:内容为网友见解,仅供参考
第1个回答  2006-09-02
1.可以借用API来实现进度,下面是我原来写的一个例子。
http://ronggang.spaces.live.com/blog/cns!A3A7B24004DD9126!127.entry

2.如果你的FILELISTBOX为 File1的话,直接在它的双击事件中编写代码:
Private Sub File1_DblClick()
If Right$(File1.Path, 1) = "\" Then
Kill File1.Path & File1.List(File1.ListIndex)
Else
Kill File1.Path & "\" & File1.List(File1.ListIndex)
End If
End Sub

Kill 时如果文件在使用则会产生一个错误,你需要去处理它。
第2个回答  2006-09-02
要实现进度,你可以用open 打开文件对文件进行拷贝复制,这样你就能具体的控制复制进度。实际上filecopy也是同样的操作。

至于你说的删除文件,你可以用kill函数 + 文件名 就可以做到,比较简单。
第3个回答  2006-09-02
kill`````就可以了啊
双击事件‘‘‘
相似回答