【发布时间】:2013-01-26 15:14:48
【问题描述】:
我第一次在 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
}
不幸的是,我现在遇到了一些关于从 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;
}
}
}
【问题讨论】:
-
Windows 窗体
Dialog不像 WPF 对话框那样返回可为空的布尔值,而是返回DialogResult。只是一个提示。 :) -
如果您无法理解不同类型之间转换的错误,也许您应该在尝试在 WPF 中做一些事情之前回到 OOP 和 C# 基础,这是一个不适合没有经验的开发人员的复杂框架。
-
@HighCore 虽然您的建议可能是最中肯的,但也无关紧要。我理解错误,这就是为什么我尝试将结果设置为 DialogResult 对象,但在 if 语句中仍然不起作用 - 因此我感到困惑
-
你可以用var代替Nullable
, var result = ofd.ShowDialog();
标签: c# wpf folderbrowserdialog