12. 在Form1.cs中的button1的Click代碼之後, 添加下列代碼,下列代碼的作用是定義treeVIEw1的DoubleClick事件,在此事件中讀取選定域或工作組中對應的計算機主機:
private void treeVIEw1_DoubleClick ( object sender , System.EventArgs e )
{
if ( treeVIEw1.SelectedNode!= null )
{
string s =treeVIEw1.SelectedNode.Text ;
treeVIEw1.SelectedNode.Nodes.Clear ( ) ;
DirectoryEntry temp= new DirectoryEntry ( ) ;
temp.Path ="WinNT://" + s ;
TreeNode node = treeVIEw1.SelectedNode ;
foreach ( DirectoryEntry pc in temp.Children )
{
if ( String.Compare ( pc.ScheMaclassName ,"computer" ,true ) == 0 )
//判斷此節點是否為計算機
{
TreeNode son = new TreeNode ( ) ;
son.Text = pc.Name ;
node.Nodes.Add ( son ) ;
}
}
}
treeVIEw1.SelectedNode.Expand ( ) ;
//展開treeVIEw1選中的節點
}
13. 至此在上述步驟都正確完成後,【Visual C#構建網絡計算機樹形圖】項目的全部工作就基本完成了。此時單擊快捷鍵F5運行程序,單擊【讀取】按鈕,則程序會讀取網絡中的域或工作組,並通過treeView1組件顯示出來,此時再雙擊treeVIEw1中的節點,則程序會讀取當前節點對應的域或工作組中的計算機,並顯示出來。圖02是【Visual C#構建網絡計算機樹形圖】項目的運行界面:
圖02:【Visual C#構建網絡計算機樹形圖】項目的運行界面
五.總結
Visual C#構建網絡計算機樹形圖其實是ADSI解決網絡問題的一個應用,Visual C#之所以能夠輕松、靈活的使用ADSI接口就是因為.Net FrameWork SDK中提供了可操作ADSI的類,靈活使用這些類庫的確能夠解決看似很煩雜的實際問題。當然本文介紹的網絡功能也存在一些弊端,譬如:網絡中的Windows 98及以下的計算機就無法訪問,從而也無法顯示在樹形圖中,這是因為Windows 98及以下計算機沒有安裝ADSI 2.5。並且此網絡功能只能構建簡單型的網絡樹形圖,如果網絡存在多個網段,那此網絡功能也只能構建運行此程序主機所在網段的樹形圖,如果此網絡還存在多個Vlan(虛擬子網),那此網絡功能也只能構建運行此程序主機所在網段及所在Vlan的網絡樹形圖。