'通過過System.IO.DirectoryInfo對(duì)象可以查閱目錄信息,下面是遍歷一個(gè)文件夾下所有層次的子文件夾,如果只檢查下一層目錄就更簡(jiǎn)單了。
創(chuàng)新互聯(lián)公司專注于企業(yè)營(yíng)銷型網(wǎng)站建設(shè)、網(wǎng)站重做改版、安福網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5建站、商城系統(tǒng)網(wǎng)站開發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為安福等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
Private?Sub?Button1_Click(ByVal?sender?As?System.Object,?ByVal?e?As?System.EventArgs)?Handles?Button1.Click
Dim?folder?=?New?System.IO.DirectoryInfo("D:\Documents")
Dim?items?=?getemptyfolder(folder)
For?Each?item?In?items
Console.WriteLine(item.FullName)
Next
End?Sub
Function?getemptyfolder(ByVal?folder?As?System.IO.DirectoryInfo)?As?System.IO.DirectoryInfo()
Dim?items?As?New?List(Of?System.IO.DirectoryInfo)
If?folder.EnumerateFiles().Count?=?0?Then
items.Add(folder)
End?If
Dim?subfolders?=?folder.EnumerateDirectories()
For?Each?subfolder?In?subfolders
items.AddRange(getemptyfolder(subfolder))?'查詢樹形目錄結(jié)構(gòu)類型數(shù)據(jù)用遞歸法實(shí)現(xiàn)
Next
Return?items.ToArray()
End?Function
'還是學(xué)c#語言吧,我發(fā)覺同樣一個(gè)數(shù)組,c#功能多的多,vb.net沒幾條方法可用。
isnothing : 檢測(cè)變量值是否為nothing。nothing表示任意數(shù)據(jù)類型的默認(rèn)值,如果變量是引用類型,則值 Nothing 意味著該變量不與任何對(duì)象相關(guān)聯(lián)。
isdbnull:說明對(duì)象的數(shù)據(jù)丟失或不存在,用于指示缺少的值。它不等效于 nullNothing 或empty
null :一般用于數(shù)據(jù)庫(kù)中。數(shù)據(jù)庫(kù)中的字段可能需要區(qū)分已賦予一個(gè)有意義的值與尚未賦值這兩種情況, 尚未賦值將用 null 值表示。
另外可以為 null 的類型的最重要成員是它有 HasValue 和 Value 屬性。 HasValue 為 FALSE時(shí)
value為 null
empty: 表示尚未實(shí)例化的變量的值,string.empty是空字符串“”,
IsNullOrEmpty:判斷是否為null或者empty.
很簡(jiǎn)單,通過WindowsAPI,刪除窗體菜單項(xiàng)就行了
首先在窗體類中聲明API:
Declare Function GetSystemMenu Lib "user32" (ByVal hWnd As IntPtr, ByVal bRevert As Boolean) As IntPtr
Declare Function RemoveMenu Lib "user32" (ByVal lngHmenu As IntPtr, ByVal nPosition As Integer, ByVal wFlags As Integer) As Integer
其次聲明API參數(shù)常量:
Const MF_BYPOSITION As Integer = H400
然后在窗體類中寫入過程:
Private Sub UserForm_Initialize_stopmove() '禁止窗體移動(dòng)
? Dim lngHwnd As IntPtr
? Dim lngHmenu As IntPtr
? lngHwnd = Me.Handle
? If lngHwnd 0 Then
? ? ? lngHmenu = GetSystemMenu(lngHwnd, False)
? ? ? RemoveMenu(lngHmenu, 0, MF_BYPOSITION) '這里的0代表菜單中從上往下數(shù)第一個(gè)菜單項(xiàng)
? End If
End Sub
Private Sub UserForm_Initialize_onmove() '恢復(fù)窗體移動(dòng)
? Dim lngHwnd As IntPtr
? Dim lngHmenu As IntPtr
? lngHwnd = Me.Handle
? If lngHwnd 0 Then
? ? ? lngHmenu = GetSystemMenu(lngHwnd, True)
RemoveMenu(lngHmenu, 0, MF_BYPOSITION) '這里的0與禁止代碼中的數(shù)值同步,原因時(shí)雖然表面上刪除了菜單項(xiàng),實(shí)則為隱藏了菜單項(xiàng),各個(gè)菜單的索引值并沒有變,所以0依然代表初始菜單的第一個(gè)菜單項(xiàng),即被刪除的那個(gè)菜單項(xiàng)
? End If
End Sub
然后如果你的窗口菜單是動(dòng)態(tài)變化的,建議聲明常數(shù):
Const MF_BYPOSITION As Integer = H0
然后使用相關(guān)的Windows功能的常數(shù)進(jìn)行刪除菜單。常數(shù)需要自行查看winuser.h頭文件
如果找不到該頭文件,可以看這里:網(wǎng)頁鏈接
其余信息詳見MSDN:網(wǎng)頁鏈接
最后說一下,不建議前面網(wǎng)友說的重寫WndProc的方法,因?yàn)檫@樣攔截標(biāo)題欄點(diǎn)擊消息會(huì)導(dǎo)致窗體本身的菜單也無法顯示出來,有損窗體功能,并且像雙擊左上角圖標(biāo)關(guān)閉窗體這樣的功能也會(huì)跟著攔截消息的操作一起被吞掉。
For Each ctl As Control In Me.Controls If TryCast(ctl, TextBox) Nothing Then Dim txt As TextBox = TryCast(ctl, TextBox) txt.Text = "" End If