通行证: 用户 密码 域名空间  下载中心 社区论坛 信息公告 MY小屋
联系我们
设为首页
加入收藏

 

QQ,ASP,PHP,JSP,XML,SQL,.Net,编程 程序 网页图象 建站经验 私服
首页 | 新闻资讯 | 编程开发 | 网页设计 | 图形图象 | 网络媒体 | 网站模板 | 数 据 库 | 投稿
论坛 | 操作系统 | 系统优化 | 网络安全 | 黑客技术 | 硬件学堂 | 硬件报价 | 服 务 器 | 地图
专题 | 应用软件 | 聊天通讯 | Q Q 专栏 | 建站经验 | 在线工具 | 站长Club | 注 册 表 | 旧版
社会 | 游戏娱乐 | 设计欣赏 | 疑难解答 | 社区论坛 | 韩国素材 | 素材图库 | 广告服务 | 服务
当前位置:首页>>编程开发>>NET专区>>正文 新版上线![旧版]
注:打开慢时请稍等

多线程填写treeview控件(vb.net)

http://www.iyit.net  日期:2006-6-12 1:58:11  来源:  点击:
参加讨论

功能:把选定文件夹下的dll、子文件夹和子文件夹中的dll填写到窗体的treeview控件上。

缺点:窗体简单,代码有些混乱,线程之间的调用可能没有到最优化。

实现:imagelist中的图片需要自己重新定义。

多线程的优点:可以及时响应用户的操作,不至于产生“未响应”的尴尬;设计合理(结合需求)的话,可使软件的性能提高。

多线程的编写:结构合理、注意同步。

以上是我对这个例程和多线程的个人体会,如有不妥之处,还请大家批评指正。


Imports System.IO
Public Class Form1
    Inherits System.Windows.Forms.Form

#Region " Windows 窗体设计器生成的代码 "

    Public Sub New()
        MyBase.New()

        '该调用是 Windows 窗体设计器所必需的。
        InitializeComponent()

        '在 InitializeComponent() 调用之后添加任何初始化

    End Sub

    '窗体重写 dispose 以清理组件列表。
    Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
        If disposing Then
            If Not (components Is Nothing) Then
                components.Dispose()
            End If
        End If
        MyBase.Dispose(disposing)
    End Sub

    'Windows 窗体设计器所必需的
    Private components As System.ComponentModel.IContainer

    '注意: 以下过程是 Windows 窗体设计器所必需的
    '可以使用 Windows 窗体设计器修改此过程。
    '不要使用代码编辑器修改它。
    Friend WithEvents TreeView1 As System.Windows.Forms.TreeView
    Friend WithEvents btnOpenBrower As System.Windows.Forms.Button
    Friend WithEvents ImageList1 As System.Windows.Forms.ImageList
    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
        Me.components = New System.ComponentModel.Container
        Dim resources As System.Resources.ResourceManager = New System.Resources.ResourceManager(GetType(Form1))
        Me.TreeView1 = New System.Windows.Forms.TreeView
        Me.ImageList1 = New System.Windows.Forms.ImageList(Me.components)
        Me.btnOpenBrower = New System.Windows.Forms.Button
        Me.SuspendLayout()
        '
        'TreeView1
        '
        Me.TreeView1.Dock = System.Windows.Forms.DockStyle.Left
        Me.TreeView1.ImageList = Me.ImageList1
        Me.TreeView1.Location = New System.Drawing.Point(0, 0)
        Me.TreeView1.Name = "TreeView1"
        Me.TreeView1.Size = New System.Drawing.Size(376, 581)
        Me.TreeView1.TabIndex = 0
        '
        'ImageList1
        '
        Me.ImageList1.ImageSize = New System.Drawing.Size(16, 16)
        Me.ImageList1.ImageStream = CType(resources.GetObject("ImageList1.ImageStream"), System.Windows.Forms.ImageListStreamer)
        Me.ImageList1.TransparentColor = System.Drawing.Color.Transparent
        '
        'btnOpenBrower
        '
        Me.btnOpenBrower.Location = New System.Drawing.Point(408, 64)
        Me.btnOpenBrower.Name = "btnOpenBrower"
        Me.btnOpenBrower.Size = New System.Drawing.Size(96, 23)
        Me.btnOpenBrower.TabIndex = 1
        Me.btnOpenBrower.Text = "Open Brower"
        '
        'Form1
        '
        Me.AutoScaleBaseSize = New System.Drawing.Size(6, 14)
        Me.ClientSize = New System.Drawing.Size(536, 581)
        Me.Controls.Add(Me.btnOpenBrower)
        Me.Controls.Add(Me.TreeView1)
        Me.Name = "Form1"
        Me.Text = "Form1"
        Me.ResumeLayout(False)

    End Sub

#End Region
    Private Sub OpenBrower()
        Dim f As New FolderBrowserDialog
        If f.ShowDialog = DialogResult.OK Then
            Me.TreeView1.Nodes.Clear()
            Me.SuspendLayout()
            Dim nodeTemp As TreeNode = CType(Me.Invoke(New AddTreeNodeHandler(AddressOf Me.AddFileToTreeview), New Object() {f.SelectedPath}), TreeNode)
            Me.AddFile(New DirectoryInfo(f.SelectedPath), nodeTemp)
            Me.ResumeLayout(False)
        End If
    End Sub

    Private Sub AddFile(ByVal dirPath As DirectoryInfo, ByVal node As TreeNode)
        Dim tempHandler As New AddFileHandler(AddressOf Me.AddFileToTreeNode)
        For Each dir As DirectoryInfo In dirPath.GetDirectories()
            Dim nodeTemp As TreeNode = CType(Me.Invoke(tempHandler, New Object() {dir.Name, CLASSIO.Directory, node}), TreeNode)
            Me.AddFile(dir, nodeTemp)
        Next
        For Each file As FileInfo In dirPath.GetFiles("*.dll")
            Me.Invoke(tempHandler, New Object() {file.Name, CLASSIO.File, node})
        Next
    End Sub

    Private Function AddFileToTreeNode(ByVal str As String, ByVal cls As CLASSIO, ByVal node As TreeNode) As TreeNode
        Dim nodeTemp As New TreeNode(str)
        nodeTemp.ImageIndex = CInt(cls)
        node.Nodes.Add(nodeTemp)
        nodeTemp.SelectedImageIndex = nodeTemp.ImageIndex
        Return nodeTemp
    End Function

    Private Function AddFileToTreeview(ByVal str As String) As TreeNode
        Dim nodeTemp As New TreeNode(str)
        Me.TreeView1.Nodes.Add(nodeTemp)
        Return nodeTemp
        nodeTemp.SelectedImageIndex = CInt(CLASSIO.Directory)
    End Function

    Private Sub btnOpenBrower_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOpenBrower.Click
        '多线程
        Dim t As Threading.Thread = New Threading.Thread(AddressOf Me.OpenBrower)
        t.Start()

        '单线程
        'Me.OpenBrower()
    End Sub
End Class
Public Enum CLASSIO
    File = 1
    Directory = 0
End Enum
Public Delegate Function AddFileHandler(ByVal str As String, ByVal cls As CLASSIO, ByVal Node As TreeNode) As TreeNode
Public Delegate Function AddTreeNodeHandler(ByVal str As String) As TreeNode


 



编辑:黑鹰 [发送给好友] [打印本页] [关闭窗口] [返回顶部]
上一篇:使用TreeView实现无限级扩展节点
下一篇:关于C#下写的Web Service 服务在Delphi下调用时的问题
转载请注明来源:www.iyit.net
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。

 相关文章
asp.net中的vb7中如何调用dll中的函数 asp.net中的vb7中如何使用socket作一个 在ASP.NET中处理 datetime 的一些通用函
在ASP.NET中操作文件的例子(VB) 在ASP.NET中处理datetime的一些通用函数 VB.NET多线程开发实例
vb.net的windows窗体实现dos命令  一个用Wsh来控制SqlServer的Dcom的VBs 和我一起入门Direct3D的VB.net编程
VB.NET如何在没有.NET框架的机器上运行 LCS问题算法之VB.net版 VB.net 调用带参数存储过程
vb.net 中实现画图 在VB.Net中创建使用控件数组 VB6 中 善用 ByRef 提升速度
VB6 中使用错误处理对于速度的影响 EJB系列教程之一(JBuilder4+IAS41+Vbj4 如何实现给定日期的若干天以后的日期(有
vBulletin HACK----显示话题大小和打开 vBulletin HACK----关于排版的两个HACK vbs(asp)的栈类
RC4经典加密算法VB版本代码 在asp中通过vbs类实现rsa加密与解密 VBS、ASP代码语法加亮显示的类(2)
最新更新 热点排行 推荐新闻
使用 ASP.NET 加密口令
[ASP.NET] Session 详解
从ASP迁移至ASP+
从ASP迁移至ASP+ ----------进入DataS
从ASP迁移至ASP+ --将HTML表格转换为A
CGI教程(2)
CGI教程(3)
CGI教程(5)
CGI教程(6)
CGI教程(7)
CGI教程(8)
CGI教程(5)
CGI教学:第一章 cgilib例
CGI教学:第二章 动态创建图像
CGI教学:第三章 计数器的编写方法
为ASP.NET 2.0菜单控件增加target属性
将Asp.net页面输出为HTML
在ASP.NET中防止注入攻击
ASP.NET 2.0 中的异步页功能应用
asp.net面试试题收集
QQ密码本地破解
msn8.0下载
PPLive最新内部版本揭密
珊蝴虫QQ探测隐身的招式用法
Visual Basic 概述
exeplorer.exe错误的问题的总结、解决
Authorware7.0基础与实例教程连载 第5
解决Windows中的explorer.exe出错
Windows常见文件修复技巧
Photoshop打造美女性感纹身(2)
在ASP.NET中防止注入攻击
用ASP.NET开发Web服务的五则技巧
ASP.NET 2.0 中的异步页功能应用
Windows下的虚拟主机设置全功略
危险无处不在 Html标签带来的安全隐患
网络游戏是06年互联网最具发展潜力业务
巧用ACDSee 8.0截取QQ表情每一帧
解除瑞星 诺顿遗留下的杀毒兼容问题
第一款开源AJAX安全扫描工具Sprajax
WinRAR人性化功能揭密
在ASP.NET中防止注入攻击
用ASP.NET开发Web服务的五则技巧
Linux操作系统12则经典应用技巧
 友情链接
设置首 页 - 版权声明 - 广告服务 - 关于我们 - 联系我们 - 友情连接
Copyrights © 2004-2006 iYiT.Net All Rights Reserved.
网站合作、广告联系QQ:147007642、466949678
易特网络技术 点击这里给我发消息