SaveFileDialog上的DialogResult.OK不起作用

时间:2014-05-08 10:30:54

标签: c# wpf dialog savefiledialog dialogresult

我试试,当我在SaveFileDialog按保存时,我会做点什么。我尝试修复但总是出错。

SaveFileDialog dlg2 = new SaveFileDialog();
dlg2.Filter = "xml | *.xml";
dlg2.DefaultExt = "xml";
dlg2.ShowDialog();
if (dlg2.ShowDialog() == DialogResult.OK)
{....}

但我对OK有错误 - 说:

错误: 'System.Nullable'不包含'OK'的定义,并且没有扩展方法'OK'可以找到接受类型'System.Nullable'的第一个参数(你是否缺少using指令或汇编引用? )

我尝试修复此代码:

DialogResult result = dlg2.ShowDialog(); //here is error again
if (result == DialogResult.OK)
                {....}

现在错误在DialogResult上说: 'System.Windows.Window.DialogResult'是'属性',但用作“类型”

4 个答案:

答案 0 :(得分:11)

我认为您指的是WPF而非Windows Form 以下是使用SaveFileDialog

的示例
//configure save file dialog box
Microsoft.Win32.SaveFileDialog dlg = new Microsoft.Win32.SaveFileDialog();
dlg.FileName = "Document"; //default file name
dlg.DefaultExt = ".xml"; //default file extension
dlg.Filter = "XML documents (.xml)|*.xml"; //filter files by extension

// Show save file dialog box
Nullable<bool> result = dlg.ShowDialog();

// Process save file dialog box results
if (result == true)
{
   // Save document
   string filename = dlg.FileName;
}

其他示例

WPF中,您必须处理DialogResult枚举与Window.DialogResult财产之间的冲突

尝试使用完全限定名称来引用枚举:

System.Windows.Forms.DialogResult result = dlg2.ShowDialog();

if (result == DialogResult.OK)
            {....}

答案 1 :(得分:0)

DialogResult返回System.Windows.Forms.DialogResult。因此,您可以像这样使用=>

DialogResult result = dlg2.ShowDialog(); 
if (result == System.Windows.Forms.DialogResult.OK)
                {....}

答案 2 :(得分:0)

代替检查dlg2.ShowDialog()是否等于DialogResult.OK,只需检查其是否等于true

if (dlg2.ShowDialog() == true)
{....}

答案 3 :(得分:0)

这是一个非常古老的话题,但我会为您提供解决方案。您要查找的对话框结果(对于savefiledialog)是.Yes或!Cancel,因此它看起来像这样:

if (dlg2.ShowDialog() == DialogResult.Yes)

if (dlg2.ShowDialog() != DialogResult.Cancel)