投稿者 over50  (社会人) 投稿日時 2009/11/24 02:47:54
早速の返答ありがとうございます。
あにすさんの言われることを参考に、書き直してみました。

 ●35~36行目
ToolStripProgressBar1.Value = (sfile + 1) / (sfile + 1) * 100
ToolStripStatusLabel1.Text = sfile + 1 & "項目"

 これは、プログレスバーの表示に検索されるファイル数が不明なので、1度ファイル数を ToolStripProgressBar1.Maximum = 100に置き換えているです。

 ●51行目
Call DirListBox1_SelectedIndexChanged(sender, Nothing)
 第一引数にsenderを渡していますが、イベントプロシージャの第一引数は通常イベントを発生したオブジェクトが指定されます。混乱を避けるためにも、NothingかDirListBox1を指定した方が安全だと思います。

 このプロシージャの引数について,よく理解できていないのでもう少し詳しく教えていただければ嬉しいです。


あと、昼からデイレクトリ内にファイルが見つからない時に、メッセージを表示しようとしているにですが、上手くいきません。アドバイスをお願いできないでしょうか。
 
 
 Public Class Form1

    Dim DD As String '対象のディレクトリを宣言

    'プログレスバーの初期化
    Private Sub InitProgress()

        ToolStripProgressBar1.Minimum = 0

        ToolStripProgressBar1.Maximum = 100

        ToolStripProgressBar1.Value = 0
    End Sub

    Private Sub TextBox1_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged

        Dim ofold As New IO.DirectoryInfo(DD) '対象フォルダのインスタンス作成

        ListBox1.Items.Clear()

        If TextBox1.Text.Length = 0 Then '何も入力されていない場合は何もしない。
            Return
        End If

        Dim ofile As IO.FileInfo

        ListBox1.BeginUpdate()
        InitProgress() 'プログレスバーを呼び出し

        Try

            For Each ofile In ofold.GetFiles(TextBox1.Text & "*", IO.SearchOption.AllDirectories)
         
                 Dim sfile As Integer = ListBox1.Items.Count + 1 '対象ファイル数
         
          'ここにファイルがないときのメッセージを入れたい。
                'If  ??????     Then
                'MsgBox("ファイルは見つかりません。")
                'End If
 
                ListBox1.Items.Add(ofile.FullName)
                ToolStripProgressBar1.Value = sfile / sfile * 100 '対象ファイル数を100に変換
                ToolStripStatusLabel1.Text = sfile & "項目"
            Next

        Catch ex As System.UnauthorizedAccessException  'ここにアクセス権限がない場合の処理を書く
            MsgBox(ex.Message, MsgBoxStyle.Exclamation)
        End Try

        ListBox1.EndUpdate()
        ToolStripProgressBar1.Value = 0 'プログレスバーを再度初期化
    End Sub

    Private Sub ListBox1_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListBox1.DoubleClick
        Dim path As String

        Try
            path = ListBox1.SelectedItem
            Process.Start(path) '選択ファイルを起動
        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Exclamation)
        End Try

    End Sub

    Private Sub DriveListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DriveListBox1.SelectedIndexChanged
        DirListBox1.Path = DriveListBox1.Drive
        Call DirListBox1_SelectedIndexChanged(sender, Nothing)


    End Sub

    Private Sub DirListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DirListBox1.SelectedIndexChanged

        '対象ディレクトリを指定
        DD = DirListBox1.DirList(DirListBox1.DirListIndex)
         StatusBar1.Text = DD
    End Sub

End Class