public void SaveFile(object sender, EventArgs e) { Forms.SaveFileDialog saveFileDialog = new Forms.SaveFileDialog(); saveFileDialog.Filter = "XML File | *.xml"; if (saveFileDialog.ShowDialog() == Forms.DialogResult.OK) { if (saveFileDialog.FileName != "") { System.IO.FileStream fs = (System.IO.FileStream)saveFileDialog.OpenFile(); XmlWriterSettings settings = new XmlWriterSettings(); settings.NewLineOnAttributes = true; settings.Indent = true; using (XmlWriter writer = XmlWriter.Create(fs, settings)) { //make copies so that the graph can keep reading data without messing with what we're trying to save here IList <ScatterPoint> savedTempReadings = new List <ScatterPoint>(tempReadings.ToArray()); IList <DataPoint> savedAverageTemp = new List <DataPoint>(averageTemp.ToArray()); IList <RSDPoint> savedRSD = new List <RSDPoint>(RSD.ToArray()); writer.WriteStartElement("TestResults"); for (int i = 0; i < savedTempReadings.Count(); i++) { writer.WriteStartElement("TestResult"); writer.WriteElementString("Timestamp", savedTempReadings[i].X.ToString()); writer.WriteElementString("Temperature", savedTempReadings[i].Y.ToString()); writer.WriteElementString("RollingAverage", savedAverageTemp[i].Y.ToString()); writer.WriteElementString("RollingStandardDeviation", savedRSD[i].Value.ToString()); writer.WriteEndElement(); } writer.WriteEndElement(); writer.Flush(); } } } }