人人做人人澡人人爽欧美,国产主播一区二区,久久久精品五月天,羞羞视频在线观看免费

當前位置:蘿卜系統下載站 > 技術開發教程 > 詳細頁面

多線程填寫treeview控件(vb.net)

多線程填寫treeview控件(vb.net)

更新時間:2022-08-30 文章作者:未知 信息來源:網絡 閱讀次數:

功能:把選定文件夾下的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


 


溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

網站地圖xml | 網站地圖html
主站蜘蛛池模板: 彭山县| 五河县| 神木县| 景洪市| 商城县| 马龙县| 南涧| 南皮县| 舒城县| 仁布县| 东方市| 大竹县| 磐安县| 隆化县| 红原县| 开封市| 固安县| 麻栗坡县| 利辛县| 阿坝县| 武安市| 枣庄市| 苗栗县| 云梦县| 三江| 绥滨县| 永顺县| 岐山县| 房产| 长丰县| 韶关市| 揭阳市| 宁南县| 温宿县| 城市| 昂仁县| 磐安县| 阿坝| 甘孜县| 新绛县| 芷江|