public void LoadFromFileName(string fileName) { Stream stream = new FileStream(fileName, FileMode.Open); BinaryReader binaryReader = new BinaryReader(stream, System.Text.Encoding.Unicode); byte[] buffer = binaryReader.ReadBytes((int)stream.Length); //string xmlContent = File.ReadAllText(fileName); try { string xmlContent = System.Text.Encoding.Unicode.GetString(buffer); binaryReader.Close(); stream.Close(); if (xmlContent.IndexOf("<SnControl.Solution>") == -1) { xmlContent = File.ReadAllText(fileName); } string xmlSolutionContent = xmlContent.Substring(xmlContent.IndexOf("<SnControl.Solution>"), xmlContent.IndexOf("</SnControl.Solution>") - xmlContent.IndexOf("<SnControl.Solution>")); xmlSolutionContent += "</SnControl.Solution>"; string xmlFormContent = xmlContent.Substring(xmlContent.IndexOf("<System.Windows.Forms.Form"), xmlContent.IndexOf("</QuerySolution>") - xmlContent.IndexOf("<System.Windows.Forms.Form")); XmlSolutionReader xmlSolutionReader = new XmlSolutionReader(_solution); _solution = xmlSolutionReader.SetUpSolution(xmlSolutionContent); if (_solution == null) { Controls.Clear(); return; } SolutionInstance.GetInstance().Solution = _solution; IDesignerLoaderProvider loaderProvider = new XmlDesignerLoaderProvider(xmlFormContent); IDesignerGenerator generator = new XmlDesignerGenerator(); _designerViewContent = new FormsDesignerViewContent(this, loaderProvider, generator); //加载XML内容 _designerViewContent.Reload(); _designPanel = new DesignPanel(_designerViewContent.DesignSurface); _designPanel.Dock = DockStyle.Fill; Controls.Add(_designPanel); if (!_designPanel.SetRootDesigner()) { Controls.Clear(); return; } _designerViewContent.PropertyContainer.Host = _designPanel.Host; _designerViewContent.PropertyContainer.SelectableObjects = _designerViewContent.Host.Container.Components; } catch (ApplicationException e) { MessageBox.Show(e.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
public void Save(string fileName) { _fileName = fileName; XmlDocument doc = new XmlDocument(); XmlElement element = doc.CreateElement("QuerySolution"); XmlAttribute attribute = doc.CreateAttribute("version"); attribute.InnerText = "1.0"; element.Attributes.Append(attribute); doc.AppendChild(element); element = new XmlSolutionGenerator().GetElementFor(doc, SolutionInstance.GetInstance().Solution); foreach (XmlNode node in element.ChildNodes) { doc.DocumentElement.AppendChild(doc.ImportNode(node, true)); } element = new XmlDesignerGenerator().GetElementFor(doc, _designPanel.Host); foreach (XmlNode node in element.ChildNodes) { doc.DocumentElement.AppendChild(doc.ImportNode(node, true)); } doc.Save(fileName); //Stream stream = new FileStream(fileName, FileMode.Create); //BinaryWriter binaryWriter = new BinaryWriter(stream, System.Text.Encoding.Unicode); //byte[] buffer = System.Text.Encoding.Unicode.GetBytes(doc.InnerXml); //binaryWriter.Write(buffer); //binaryWriter.Close(); //stream.Close(); IsDirty = false; OnDirtyChanged(this, EventArgs.Empty); }