0

職場のユーザー向けに、「touch」コマンドの GUI バージョンを複製しています。

DataGridオブジェクトにバインドしている WPFがありList<FileInfo>ます。

ユーザーがファイルの CreationTime (たとえば) を変更すると、バインディングによってファイルが自動的に更新され、すべて問題ありません。

変更する権限がないファイルを変更しようとするまで。データバインディングは出力ウィンドウに例外をスローしますが、例外をキャッチしてステータスバーのメッセージを更新して、失敗したことを伝えたいと考えています。

現時点ではCellEditEnding、コードで例外をキャッチするために、イベントをキャッチし、手動で変更を再度適用することでこれを達成しています。これは問題ではありませんが、日付を 2 回変更せずにこれを行う方法を教えてください。

4

1 に答える 1

0

イベントを処理しBeginningEditてファイルにアクセスできるようにし、ファイルにアクセスできない場合Cancelは渡さDataGridBeginningEditEventArgsれた のプロパティを設定しtrueます。

特定のパスへの書き込みアクセス権があるかどうかを判断するには、次を使用します。

using System.Security.Permissions;

...
public void dataGrid_BeginningEdit(object sender, DataGridBeginningEditEventArgs e)
{
    FileIOPermission permission = new FileIOPermission(FileIOPermissionAccess.Write, path);
    try
    {
        permission.Demand();            
    }
    catch
    {
        e.Cancel = true;
    }
}
于 2013-05-09T02:22:42.963 に答える