2017-06-18 35 views
0

我有一个应用程序,允许用户检索JSON或XML的部分数据取决于哪个单选按钮被选中,数据被解析,然后显示在一些窗口应用程序表单控件他们可以选择将数据保存在文本文件或XML文件中的控件中,具体取决于它们选择哪些(与用于检索数据相同的单选按钮)单选按钮。保存一个文本或XML文件取决于哪个单选按钮被检查

每次我保存一个文件时,无论选择哪个单选按钮,它都不会以选择的格式保存它。当我检查我的电脑上的文件时,它只显示一个类型为“文件”的空白文档图标。

我的代码看起来与此类似,这是一个按钮内:

SaveFileDialog newData = new SaveFileDialog(); 

     if (newData.ShowDialog() == DialogResult.OK) 
     { 
      if (jsonRB.Checked) 
      { 
       newData.DefaultExt = "txt"; 

       string dataPath = newData.FileName; 

       using (StreamWriter newFile = new StreamWriter(File.Create(dataPath))) 
       { 
        //Writing string to save data 

       } 

      } 
      else 
      { 
       newData.DefaultExt = "xml"; 

       XmlWriterSettings adjust = new XmlWriterSettings(); 
       adjust.ConformanceLevel = ConformanceLevel.Document; 

       adjust.Indent = true; 


       using (XmlWriter newFile = XmlWriter.Create(newData.FileName, adjust)) 
       { 
        //writing data 
        newFile.WriteEndElement(); 

       } 

      } 
     } 
+0

尝试调用'的ShowDialog()前设置'DefaultExt''如指出,这里:[FileDialog.DefaultExt属性](https://msdn.microsoft.com/en-us/library/system.windows.forms.filedialog.defaultext(v = vs.110).aspx) –

回答

1

这应该做的伎俩:

SaveFileDialog saveDlg = new SaveFileDialog(); 
if(jsonRB.Checked) 
{ 
    //The default selected extension 
    saveDlg.Filter = "Text files (*.txt)|*.txt|All files (*.*)|*.*"; 
    //this is used if you select All files (*.*) but omit a extension 
    saveDlg.DefaultExt = "txt"; 
} 
else 
{ 
    saveDlg.Filter = "XML files (*.xml)|*.xml|All files (*.*)|*.*"; 
    saveDlg.DefaultExt = "xml"; 
} 
if(saveDlg.ShowDialog() == DialogResult.OK) 
{ 
    if (jsonRB.Checked) 
    { 
     //Save JSON 
    } 
    else 
    { 
     //Save XML 
    } 
} 
相关问题