国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

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

2024-07-10 13:00:57
字體:
來源:轉載
供稿:網友
注冊會員,創建你的web開發資料庫,功能:把選定文件夾下的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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 江津市| 岱山县| 江永县| 定南县| 奈曼旗| 蓝山县| 鲜城| 江陵县| 霍林郭勒市| 武清区| 华安县| 裕民县| 泽州县| 三门县| 临汾市| 渝北区| 琼结县| 安西县| 广平县| 河北省| 诸城市| 甘谷县| 石狮市| 白玉县| 乌兰察布市| 贵州省| 宾川县| 河东区| 鄢陵县| 南通市| 泰安市| 资源县| 浦北县| 大兴区| 璧山县| 突泉县| 宝应县| 隆安县| 博爱县| 汶上县| 阿瓦提县|