打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
快速清空TreeView的内容

[1]clear方法:TreeView1.Nodes.Clear()

[2]TreeView提供了Clear方法来清除所有节点,但是采用逆序逐一删除节点,会更快。 你可以使用下面的代码:

Dim i As Integer

        For i = (TreeView1.Nodes.Count - 1) To 0 Step -1 '因为会重新绘制控件以显示剩余的节点,要逆序删除,如果顺着删除,那么删除第1个节点,第2个节点会顶上去变成第1个节点。

            TreeView1.Nodes.Remove(TreeView1.Nodes(i))

        Next i   

[3]使用简单的API函数,你将可以进一步提高性能。不幸的是,当VB循环删除TreeView的节点时,它不断地重新绘制控件以显示剩余的节点。而这个行为会显著地降低进程的速度。我们所要采用的方法就是当删除节点时,禁止TreeView重新绘制它的节点。幸运的是,Windows API提供了一个函数来做到这一切。SendMessage()函数支持WM_SETREDRAW消息。使用这个消息,你的代码可以决定是否一个窗口应该被重新绘制。传递True (等价于API的1)允许窗口重新绘制,或者False (0)来阻止绘制。 加上API代码,我们清除代码是这样:      组合了API的逆序删除是最快的清除TreeView控件。

Private Const WM_SETREDRAW = &HB

    Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Object) As Long

    Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click

        Dim i As Integer

        SendMessage(TreeView1.Handle, WM_SETREDRAW, 0, 0)

        For i = TreeView1.Nodes.Count - 1 To 0 Step -1

            TreeView1.Nodes.Remove(TreeView1.Nodes(i))

        Next i

        SendMessage(TreeView1.Handle, WM_SETREDRAW, 1, 0)

    End Sub

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
模拟 IE 的 地址栏:智慧型下拉式 Combo
TreeView展开所有节点
SendMessage函数的常用消息及其应用大全
SENDMESSAGE函数巧应用
delphi中如何在控件刷新之前禁止重画,更新了数据后再刷新
玩转TreeView
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服