InvalidOperationException in CommonSaveFileDialog of Windows

本文关键字:Windows of CommonSaveFileDialog in InvalidOperationException | 更新日期: 2023-09-27 18:30:38

我在WPF中使用WindowsAPICodePack的CommonSaveFileDialog来要求用户输入文件名。为了在关闭对话框之前检查文件名,我有一个 FileOk 处理程序。但是,如果我尝试获取 FileName 属性,则会抛出一个 InvalidOperationException,指出在对话框关闭之前此属性不可用。

那么,在FileOk处理程序中,如何检索用户选择或输入的完整文件名呢?

InvalidOperationException in CommonSaveFileDialog of Windows

Hans Passant建议的可能解决方法,无需修改源代码:

dialog.FileOk += (sender, e) =>
{
    var filenames = new Collection<string>();
    typeof(CommonFileDialog)
        .GetMethod("PopulateWithFileNames", BindingFlags.Instance | BindingFlags.NonPublic)
        .Invoke(dialog, new[] { filenames });
    // use filenames
}