Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
ファイル検索プログラムより
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=9463#CommentId13613
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
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