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中的类.无论如何,我以为它正在使用它.