我从部署在字段中的 WPF 应用程序获取报告,当尝试显示打开文件对话框时,将引发以下 ArgumentException。
Exception Message: Value does not fall within the expected range.
Method Information: MS.Internal.AppModel.IShellItem2 GetShellItemForPath(System.String)
Exception Source: PresentationFramework
Stack Trace
at MS.Internal.AppModel.ShellUtil.GetShellItemForPath(String path)
at Microsoft.Win32.FileDialog.PrepareVistaDialog(IFileDialog dialog)
at Microsoft.Win32.FileDialog.RunVistaDialog(IntPtr hwndOwner)
at Microsoft.Win32.FileDialog.RunDialog(IntPtr hwndOwner)
at Microsoft.Win32.CommonDialog.ShowDialog(Window owner)
...
问题是,到目前为止,我还无法在我的开发环境中复制它,但我收到了来自该领域的几份报告,表明此异常正在发生。
有没有人见过这个?最重要的是,您是否知道原因和/或解决方法,而不仅仅是简单地在它周围放置一个 try/catch 并指示用户再次尝试他们正在尝试做的任何事情?
作为对评论的回应,这是打开对话框的代码(不,这不是检查返回类型的问题)。从 ShowDialog 中抛出异常(请参阅堆栈跟踪):
Nullable<bool> result = null;
var dlg = new Microsoft.Win32.OpenFileDialog();
dlg.DefaultExt = ".txt";
dlg.Filter = "Text Files (.txt)|*.txt|All Files|*.*";
dlg.Title = "Open File";
dlg.Multiselect = false;
dlg.InitialDirectory = GetFolderFromConfig("folders.templates");
result = dlg.ShowDialog(Window.GetWindow(this));
if (result == true)
{
// Invokes another method here..
}