C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: FileSystem.DeleteFileでのダイアログ表示


(過去ログ 84 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■50264 / inTopicNo.1)  FileSystem.DeleteFileでのダイアログ表示
  
□投稿者/ A.K (4回)-(2010/06/01(Tue) 23:41:38)

分類:[VB.NET/VB2005 以降] 

こんにちは いつもお世話になっております。
当方の環境はVB2005SP1です。

リストビューでチェックしたファイルを一括削除するロジックを作成しています。(削除したファイルはゴミ箱に送ります)
そこで、My.Computer.FileSystem.DeleteFileメソッドを使用することになったのですが、思ったような動作をしてくれません。
MSDNによれば、ファイル削除の際にユーザーに確認するには、showUI を AllDialogs に設定するとあり、また処理中のユーザーによる中断も可能ということだったのですが、そのように指定してもダイアログが表示されないのです。

こちらの想定
 1.削除確認ダイアログが表示
 2.ユーザーがOKを出したら、リストでチェックされている全てのファイルをゴミ箱送り
 3.ユーザーは処理の途中でキャンセルを行える。その場合、途中で削除処理が中断される

実際の動き
 1.削除確認ダイアログは表示されず
 2.いきなり削除が始まる
 3.キャンセルダイアログの表示も行われない

ソース:
  Dim filePath As String
  Dim selectedIndex As Integer = 0
  Dim i As Integer = 0

  Try
    lstv_Main.BeginUpdate()

    For i = lstv_Main.CheckedIndices.Count - 1 To 0 Step -1
      selectedIndex = lstv_Main.CheckedIndices(i)

      'パスの取得
      filePath = GetListItemPath(lstv_Main.Items(selectedIndex))

      targetFileInfo = New FileInfo(filePath)

      'カウンタの更新
      deletedFilesCount += 1
      deletedFilesLength += targetFileInfo.Length

      'ファイルの削除
      My.Computer.FileSystem.DeleteFile(filePath, _
      FileIO.UIOption.AllDialogs, _
      FileIO.RecycleOption.SendToRecycleBin)

      'リストから消す
      lstv_Main.Items(selectedIndex).Remove()
    Next
  Finally
    lstv_Main.EndUpdate()
  End Try

参考:http://msdn.microsoft.com/ja-jp/library/5fbah944(VS.80).aspx(My.Computer.FileSystem.DeleteFile メソッド)
   http://msdn.microsoft.com/ja-jp/library/tdx72k4b(v=VS.80).aspx(Visual Basic でファイルを削除する)
   http://msdn.microsoft.com/ja-jp/library/h63bz6ys(v=VS.80).aspx(Visual Basic でディレクトリ内のすべてのファイルを削除する)

確認ダイアログに関しては、処理の最初に手動で表示させれば代替可能ですが、キャンセルダイアログが表示されないなどスッキリしない部分があり、
この動作で正しいのかどうか確証が持てないので質問させていただきました。
どなたか分かる方がいらっしゃいましたら、よろしくお願いします。
引用返信 編集キー/
■50276 / inTopicNo.2)  Re[1]: FileSystem.DeleteFileでのダイアログ表示
□投稿者/ aetos (305回)-(2010/06/02(Wed) 10:36:18)
No50264 (A.K さん) に返信

UIOption.AllDialogs は「進捗状況及びエラーの表示」であって「削除確認の表示」ではないように見受けられます。
進捗状況も表示されていないのは、削除が一瞬で完了してしまうので表示する暇がないとかではないでしょうか?
引用返信 編集キー/
■50294 / inTopicNo.3)  Re[2]: FileSystem.DeleteFileでのダイアログ表示
□投稿者/ A.K (5回)-(2010/06/02(Wed) 22:02:19)
ダイアログに関しては自己解決しました。
システム側の設定で、ゴミ箱に送る際、確認ダイアログを出す設定にしておかなければならなかったようです。
しかし、(まあ上のソースなら当然ですが)その場合は削除しようと思ったファイルの数だけ、連続でダイアログが表示されます。
複数ファイルをゴミ箱に送った時のように、最初の一度だけ確認ダイアログを表示する方法が分かりません…
どのようにしたら良いのでしょうか…?

No50276 (aetos さん) に返信
> 進捗状況も表示されていないのは、削除が一瞬で完了してしまうので表示する暇がないとかではないでしょうか?

お返事ありがとうございます。
ファイル300個・100MBくらいで試してみたのですが、ダイアログは表示されませんでした。(容量は関係ないかな?
念のため、もっと大量のファイルで確認してみます。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -