Beispiel #1
0
        //粘贴字段
        private void PasteField()
        {
            try
            {
                FieldListContent content = XmlUtility.StringToObject <FieldListContent>(Clipboard.GetText());

                for (int i = 0; i < content.DataList.Count; i++)
                {
                    NodeField field     = content.DataList[i];
                    string    fieldName = field.FieldName;
                    while (m_NodeDefine.ExistFieldName(fieldName))
                    {
                        fieldName += "_New";
                    }

                    field.FieldName = fieldName;
                    m_NodeDefine.AddField(field);
                }
                Exec("Refresh");
                MainForm.Instance.ShowInfo("您粘贴了" + content.DataList.Count + "个字段!!!");
            }
            catch (Exception ex)
            {
                MainForm.Instance.ShowInfo("无法进行粘贴,错误信息:" + ex.Message);
                MainForm.Instance.ShowMessage("无法进行粘贴,错误信息:" + ex.Message, "警告");
            }
        }
Beispiel #2
0
        /// <summary>
        /// 修正数据
        /// </summary>
        public bool AjustData()
        {
            bool ajust = false;

            for (int i = 0; i < m_Nodes.Count; i++)
            {
                NodeDesigner node       = m_Nodes[i];
                NodeDefine   nodeDefine = MainForm.Instance.NodeTemplate.FindNode(node.ClassType);

                //修正节点标签
                if (node.Label != nodeDefine.Label)
                {
                    node.Label = nodeDefine.Label;
                    ajust      = true;
                }

                //移除模板中没有的字段
                for (int ii = node.Fields.Count - 1; ii >= 0; ii--)
                {
                    FieldDesigner field = node.Fields[ii];
                    if (!nodeDefine.ExistFieldName(field.FieldName))
                    {
                        ajust = true;
                        node.Fields.RemoveAt(ii);
                    }
                }

                //修正类型不匹配的(节点字段和模板字段类型不匹配)
                for (int ii = 0; ii < node.Fields.Count; ii++)
                {
                    FieldDesigner field     = node.Fields[ii];
                    NodeField     nodeField = nodeDefine.FindField(field.FieldName);
                    if (field.FieldType != nodeField.FieldType)
                    {
                        //重新给默认值
                        node.Fields[ii] = EditorUtility.CreateFieldByNodeField(nodeField);
                        ajust           = true;
                    }
                }

                //添加不存的字段
                for (int ii = nodeDefine.Fields.Count - 1; ii >= 0; ii--)
                {
                    NodeField     nodeField = nodeDefine.Fields[ii];
                    FieldDesigner field     = node.FindFieldByName(nodeField.FieldName);
                    //不存在的字段要添加
                    if (field == null)
                    {
                        FieldDesigner newField = EditorUtility.CreateFieldByNodeField(nodeField);
                        node.AddField(newField);
                        ajust = true;
                    }
                }

                //排序字段(要和模板中一致)
                for (int ii = 0; ii < nodeDefine.Fields.Count; ii++)
                {
                    NodeField nodeField = nodeDefine.Fields[ii];
                    int       index     = node.GetFieldIndex(nodeField.FieldName);
                    if (index != ii)
                    {
                        //交换
                        FieldDesigner tempField_ii = node.Fields[ii];
                        node.Fields[ii]    = node.Fields[index];
                        node.Fields[index] = tempField_ii;
                        ajust = true;
                    }
                }

                //修正Label
                for (int ii = 0; ii < node.Fields.Count; ii++)
                {
                    FieldDesigner field     = node.Fields[ii];
                    NodeField     nodeField = nodeDefine.Fields[ii];
                    if (field.Label != nodeField.Label)
                    {
                        field.Label = nodeField.Label;
                        ajust       = true;
                    }
                }
            }

            return(ajust);
        }