Exemplo n.º 1
0
        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);
            }
        }
Exemplo n.º 2
0
        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);
        }