- PR -

「名前を付けて保存」ダイアログ OverwritePrompt プロパティ

1
投稿者投稿内容
chiroru
ベテラン
会議室デビュー日: 2008/10/02
投稿数: 59
投稿日時: 2009-03-18 15:50
SaveFileDialogで既に存在するファイル名を指定した場合、
上書きする前に確認メッセージを表示するようにプロパティで設定しています。
OverwritePromptプロパティをtrueに設定。(既定値は true)
メッセージ:「ファイル c:\\\\XXX.pdfは既に存在します。置き換えますか?」

そこで質問ですが、既に存在するファイルが開いていない場合は、問題ありませんが、
ファイルを開いた状態で上書き保存をするとエラーになります。
ここで、指定したファイルを開いていた場合下記のようなエラーを出すにはどうすればいいでしょうか?
メッセージ:「保存できません。指定したファイルは現在使用中です」

ugaya
会議室デビュー日: 2006/08/03
投稿数: 18
投稿日時: 2009-03-18 15:59
OpenFileメソッドでtry〜catchすれば良いのではないでしょうか?
_________________
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
ugaya
-------------------
ugaya40@hotmail.com
----------------------------------
http://d.hatena.ne.jp/ugaya/
chiroru
ベテラン
会議室デビュー日: 2008/10/02
投稿数: 59
投稿日時: 2009-03-18 17:16
OpenFileDialogイベント調べました。
SaveFileDialogをShowDialogした後に下記のコードを書くことで解決しました。
コード:
Try
    Dim dialog As SaveFileDialog = New SaveFileDialog()
    Dim res As DialogResult
    Dim myStream As Stream = Nothing
    res = dialog.ShowDialog()
    If res = Windows.Forms.DialogResult.OK Then
        Try
            myStream = dialog.OpenFile()
            If (myStream IsNot Nothing) Then
                〜省略〜
            End If
        Catch ex As Exception
            MessageBox.Show("保存できません。指定したファイルは現在使用中です。", MessageBoxButtons.OK) 
        Finally
            If (myStream IsNot Nothing) Then
                myStream.Close()
            End If
        End Try
    Else
		 〜省略〜
    End If
    dialog.Dispose()
    Return ""
Catch ex As Exception
    Return ""
    AppErrorHandler(ex)
End Try

1

スキルアップ/キャリアアップ(JOB@IT)