ターミナル サーバー環境で使用する単純なプリンター マネージャーを作成したいと考えています。GPO の制限により、使用できる組み込み機能に制限があります。そこで、それを行うための独自の単純な GUI を作成することにしました。
現在、プリンターはフォルダーに分散されており、それらを分類するためのサブフォルダーがあります。各フォルダーには、プリントサーバー上の実際のプリンターへの .lnk ファイルがあります。
私がやりたいことは、ツリービューでクリックされた項目に基づいて、ツリービューにフォルダーとリストビューのプリンターを設定することです。
ディレクトリを検索し、クリックした各項目のファイルを検索することができました。しかし、フォームの起動時にこれを行うためにコレクションなどを使用しないのはなぜでしょうか? そうすれば、速くなります。現時点では、ツリービューの項目をクリックするたびに少し遅延があるためです。毎回ファイルをスキャンするためです。
同じものをコレクションに追加して、代わりに使用するにはどうすればよいですか?
これが私の現在のコードです:
Public Sub populateTreeView(ByVal strPath As String)
Dim di As New IO.DirectoryInfo(strPath)
Dim diar1 As IO.DirectoryInfo() = di.GetDirectories()
Dim dra As IO.DirectoryInfo
For Each dra In diar1
ImageList1.Images.Add(GetSmallIcon(dra.FullName))
TreeView1.Nodes.Add("", dra.Name, nIndex)
nIndex = nIndex + 1
Next
End Sub
Private Sub TreeView1_AfterSelect(sender As Object, e As TreeViewEventArgs) Handles TreeView1.AfterSelect
ListView1.Clear()
nIndex = 0
Dim di As New IO.DirectoryInfo(strIniSettings & "\" & TreeView1.SelectedNode.Text)
Dim diar1 As IO.FileInfo() = di.GetFiles()
Dim dra As IO.FileInfo
For Each dra In diar1
Dim strName As String
strName = Replace(dra.Name, ".lnk", "")
ImageList2.Images.Add(GetLargeIcon(dra.FullName))
ListView1.Items.Add("", strName, nIndex)
nIndex = nIndex + 1
Next
End Sub
イメージリストに注目してください。各アイテムのアイコンも取得します。