我正在为工作中的用户复制'touch'命令的GUI版本。
我有一个WPF DataGrid
我绑定到List<FileInfo>
对象。
当用户更改文件的CreationTime(例如)时,绑定会自动更新文件,一切都很好。
在您尝试更改无权更改的文件之前。数据绑定将异常抛出到输出窗口,但我想捕获异常并更新状态栏消息以说明它失败。
目前我通过捕获CellEditEnding
事件并再次手动应用更改来实现此目的,只是为了捕获代码中的异常。这不是问题,但我想知道怎么做而不试图改变日期两次?
答案 0 :(得分:0)
处理BeginningEdit
事件以确保文件可访问,如果文件不可访问,则将传递的DataGridBeginningEditEventArgs
的Cancel
属性设置为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;
}
}