在WPF中使用FolderBrowserDialog的DialogResult

Ort*_*und 9 c# wpf folderbrowserdialog

我第一次在WPF中实现FolderBrowserDialog并且我不喜欢它...

除了我已经弄清楚我的项目中没有引用Windows.Forms的问题,现在我在查看DialogResult返回值是什么时遇到了麻烦......

使用OpenFileDialog,过去我已经这样做了:

OpenFileDialog ofd = new OpenFileDialog();
Nullable<bool> result = ofd.ShowDialog();

if (result == true)
{
    // all went well, carry on and do your thing here
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,我现在得到的错误是关于从DialogResult类型转换为bool以及任何有你的转换.

在WPF中使用对话框似乎无法找到关于如何完成此步骤的任何内容,任何人都可以解决一些问题吗?

提前致谢!

编辑

这是我的代码修改后没有类型转换错误.我不确定要检查什么价值result.通常我会使用,DialogResult.OK除了在这里没有显示为有效值.

    private void btnBrowse_Click(object sender, RoutedEventArgs e)
    {
        if (cmbTemplate.SelectedItem == "Blockbusters")
        {
            FolderBrowserDialog fbd = new FolderBrowserDialog();

            DialogResult result = fbd.ShowDialog();

            //
            // ERROR: 'System.Nullable<bool>' does not contain a definition for 'OK'
            // and no extention method 'OK' accepting a first argument of type
            // 'System.Nullable<bool>' could be found.
            //
            if (result == DialogResult.OK)
            {
                txtSource.Text = fbd.SelectedPath;
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

Ort*_*und 16

好吧所以事实证明所有答案其他答案都是正确的.

他们错过了一件事,我认为这是我的错......

每当我DialogResult在Intellisense中看到试图在我的if语句中使用它时(因为我被告知要使用它,我看到了这个:

布尔?Window.Dialog.Result
获取或设置对话框结果值,该值是从
System.Windows.Window.ShowDialog()方法返回的值.

例外:
System.InvalidOperationException

这个特殊的DialogResult对象不是我想要的对象.

最终起作用的是以下内容:

DialogResult result = fbd.ShowDialog();

if (result == System.Windows.Forms.DialogResult.OK)
{
    // do work here
}
Run Code Online (Sandbox Code Playgroud)

值得注意的是,我确实System.Windows.Forms在我的使用中引用了这一点,这就是为什么我从未想过在上面的代码片段中引用System中的类.无论如何,我以为它正在使用它.