private void AddNewCoord_Click(object sender, EventArgs e)
        {
            try
            {
                string NewCoordName;
                InputDialog.Show(out NewCoordName);
                if (Char.IsDigit(NewCoordName, 0))
                {
                    throw new Exception("开头不能是数字");
                }
                if (NewCoordName == "")
                {
                    throw new Exception("名称不能为空");
                }
                if (NewCoordName.StartsWith("-"))
                {
                    throw new Exception("非法字符");
                }

                string XMLPath          = "Root/" + treeView1.SelectedNode.FullPath.Replace("\\", "/");
                string TreeviewAreaPath = "";

                if (CoordXML.SelectSingleNode(XMLPath).Attributes["Class"].Value == "Coord")
                {
                    TreeviewAreaPath = XMLPath.Replace("/" + treeView1.SelectedNode.Name, "");
                }

                if (CoordXML.SelectSingleNode(XMLPath).Attributes["Class"].Value == "Area")
                {
                    TreeviewAreaPath = XMLPath;
                }

                XmlElement newChild = MakeNewelement(NewCoordName);
                foreach (XmlNode childNode in CoordXML.SelectSingleNode(TreeviewAreaPath).ChildNodes)
                {
                    if (childNode.Name == NewCoordName)
                    {
                        DialogResult dialogResult = MessageBox.Show("是否覆盖?", "坐标名称冲突", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
                        if (dialogResult == DialogResult.OK)
                        {
                            CoordXML.SelectSingleNode(TreeviewAreaPath).RemoveChild(CoordXML.SelectSingleNode(TreeviewAreaPath + "/" + NewCoordName));
                            CoordXML.SelectSingleNode(TreeviewAreaPath).AppendChild(newChild);
                            treeView1.Nodes.Clear();
                            RecursionTreeControl(CoordXML.DocumentElement, treeView1.Nodes);
                            loader.OutputXML(CoordXML, CoordDataPath);
                        }
                        return;
                    }
                }
                CoordXML.SelectSingleNode(TreeviewAreaPath).AppendChild(newChild);

                treeView1.Nodes.Clear();
                RecursionTreeControl(CoordXML.DocumentElement, treeView1.Nodes);
                loader.OutputXML(CoordXML, CoordDataPath);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "严重错误:上溢", MessageBoxButtons.OK);
            }
        }
Example #2
0
        private void SaveCoord_Click(object sender, EventArgs e)
        {
            string Coordname = string.Empty;

            InputDialog.Show(out Coordname);
            try
            {
                Coordinate buffer = new Coordinate();
                buffer.X = Convert.ToSingle(DirectX.Text);
                buffer.Y = Convert.ToSingle(DirectY.Text);
                buffer.Z = Convert.ToSingle(DirectZ.Text);

                if (preset.List.ContainsKey(Coordname))
                {
                    DialogResult dr = MessageBox.Show("是否覆盖?", "坐标名称冲突", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
                    if (dr == DialogResult.OK)
                    {
                        preset.List[Coordname] = buffer;
                        preset.Save();
                    }
                }
                else
                {
                    preset.List.Add(Coordname, buffer);
                    preset.Save();
                }
                LoadPreset();
            }
            catch (Exception err)
            {
                MessageBox.Show(err.Message, "严重错误:上溢", MessageBoxButtons.OK);
            }
        }
        private void NewAreaBtn_Click(object sender, EventArgs e)
        {
            try
            {
                string strText = string.Empty;
                InputDialog.Show(out strText);
                if (Char.IsDigit(strText, 0))
                {
                    throw new Exception("开头不能是数字");
                }
                if (strText == "")
                {
                    throw new Exception("名称不能为空");
                }
                if (strText.StartsWith("-"))
                {
                    throw new Exception("非法字符");
                }

                foreach (XmlNode childNode in CoordXML.SelectSingleNode("Root").ChildNodes)
                {
                    if (childNode.Name == strText)
                    {
                        throw new Exception("区域已存在");
                    }
                }

                XmlElement   xmlElement   = CoordXML.CreateElement(strText);
                XmlAttribute xmlAttribute = CoordXML.CreateAttribute("Class");
                xmlElement.SetAttribute("Class", "Area");
                CoordXML.SelectSingleNode("Root").AppendChild(xmlElement);
                treeView1.Nodes.Clear();
                RecursionTreeControl(CoordXML.DocumentElement, treeView1.Nodes);
                loader.OutputXML(CoordXML, CoordDataPath);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "严重错误:上溢", MessageBoxButtons.OK);
            }
        }