VB中LIST控件的问题

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

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

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

栽培者你那个API进度函数不能调用啊。。我按你说的加了模块,但是在调用uCopyFile时提示BYREF参数类型不符合,去掉prgState后运行提示uCopyFile 参数不可选。。。不知道什么问题。。帮帮我~~谢谢
展开
 我来答
似水流年00
2006-09-02 · TA获得超过2073个赞
知道小有建树答主
回答量:956
采纳率:0%
帮助的人:1366万
展开全部
这个问题可以这样的解决:在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) 就可以了!

你可以试一试!!!
栽培者
2006-09-02 · TA获得超过1067个赞
知道小有建树答主
回答量:746
采纳率:0%
帮助的人:771万
展开全部
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 时如果文件在使用则会产生一个错误,你需要去处理它。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
甲甲虫
2006-09-02 · TA获得超过976个赞
知道小有建树答主
回答量:648
采纳率:0%
帮助的人:386万
展开全部
要实现进度,你可以用open 打开文件对文件进行拷贝复制,这样你就能具体的控制复制进度。实际上filecopy也是同样的操作。

至于你说的删除文件,你可以用kill函数 + 文件名 就可以做到,比较简单。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2006-09-02
展开全部
kill`````就可以了啊
双击事件‘‘‘
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式