私は、クリックするとテキストボックスに含まれるすべてのサブフォルダのリストボックスに値を設定します。特定の深度/レベルのサブフォルダのみを返すように検索を実行することは可能ですか?例えばすべてのサブフォルダを返さないように特定の深さにフォルダを検索します。
、代わりに:
のfolder1> subfolder1> subfolder2> subfolder3> subfolder4
私は、最初の2つのレベル戻るためにそれを伝えることができます。 のfolder1> subfolder1> subfolder2>
を現在のコードは次のとおりです
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
AddFolders(txtsearchdirectory.Text)
End Sub
Private Sub AddFolders(root As String)
ListBox1.Items.Add(root)
Try
For Each folder As String In My.Computer.FileSystem.GetDirectories(root)
AddFolders(folder)
Application.DoEvents()
Next
Catch ex As Exception
System.Windows.Forms.MessageBox.Show(ex.Message)
End Try
End Sub
ここでの 'Application.DoEvents()'の目的は何ですか?一般的に言えば、そのようなメッセージキューをポンピングする必要はありません。 –
多くのコピー・ペースト・カーゴ・カルト・コードがここにあります。 DoEventsは本当の問題ですが、すべての例外を取り除くキャッチブロックも悪い考えです。メッセージボックスを取得するために例外を処理する必要はありません。これは未処理の例外に対して自動的に発生します。あなたが実際にできる例外を処理するだけです...まあ、処理してください。 'DoEvents'を使わないでください。それは魔法の "私のUIの応答を維持する"機能ではありません。このコードは、バックグラウンドスレッド上で実行する必要があるほど長くかかるべきではありません。ユーザーの脳が「クリック」イベントを処理するときに、マシン上のファイルシステム全体を反復することができます。 –