/// <summary> /// 构造方法,根据treeView设置内部类以及属性 /// </summary> /// <param name="treeViewConfig"></param> public GenereateConfigClass(TreeView treeViewConfig) { ClassName = treeViewConfig.Tag.ToString(); if (treeViewConfig == null) { throw new ArgumentNullException(); } dtProperty = new DataTable(); dtProperty.Rows.Add(dtProperty.NewRow()); dsInnerClass = new DataSet(); for (int i = 0; i < treeViewConfig.Nodes.Count; i++) { TreeNode node = treeViewConfig.Nodes[i]; if (node.Nodes.Count > 0) { DataTable dt2 = GetInnerClassTable(node); dsInnerClass.Tables.Add(dt2); continue; } if (node.Tag != null && node.Tag is EditXmlNode) { EditXmlNode xmlNode = node.Tag as EditXmlNode; dtProperty.Columns.Add(xmlNode.name, xmlNode.ValueType); dtProperty.Rows[0][xmlNode.name] = xmlNode.DefaultValue; } } }
/// <summary> /// 根据EditXmlNode设置画面值 /// </summary> /// <param name="xmlNode"></param> private void SetValueByEditXmlNode(EditXmlNode xmlNode) { dataGridView1.Columns.Clear(); //清空属性 dataGridView1.DataSource = xmlNode.Attribute; comboBoxType.SelectedValue = xmlNode.ValueType; if (typeof(DateTime) == xmlNode.ValueType) { dateTimePicker1.Value = Convert.ToDateTime(xmlNode.DefaultValue); //dateTimePicker1.Enabled = true; //textBoxValue.Enabled = false; //checkBox1.Enabled = false; } else if (typeof(bool) == xmlNode.ValueType) { checkBox1.Checked = Convert.ToBoolean(xmlNode.DefaultValue); //dateTimePicker1.Enabled = false; //textBoxValue.Enabled = false; //checkBox1.Enabled = true; } else { textBoxValue.Text = xmlNode.DefaultValue.ToString(); //dateTimePicker1.Enabled = false; //textBoxValue.Enabled = true; //checkBox1.Enabled = false; } textBoxConfigName.Text = xmlNode.name; textBoxInnerText.Text = xmlNode.DefaultValue.ToString(); }
/// <summary> /// 获取EditXmlNode值 /// </summary> /// <returns></returns> private EditXmlNode GetEditXmlNode() { EditXmlNode xmlNode = new EditXmlNode(); Item item = GetItem(); xmlNode.ValueType = item.type; xmlNode.DefaultValue = item.value; xmlNode.name = item.name; return(xmlNode); }
/// <summary> /// 节点点击事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) { if (formStateNow == FormState.View) { if (null != e.Node.Tag && e.Node.Tag is XmlNode) { XmlNode xmlNode = e.Node.Tag as XmlNode; if (xmlNode == null) { return; } dataGridView1.Columns.Clear(); //清空属性 int count = xmlNode.Attributes.Count; if (count > 0) { DataTable dt = new DataTable(); dt.Rows.Add(dt.NewRow()); for (int i = 0; i < count; i++) { dt.Columns.Add(xmlNode.Attributes[i].Name); dt.Rows[0][xmlNode.Attributes[i].Name] = xmlNode.Attributes[i].Value; } dataGridView1.DataSource = dt; } if (xmlNode.FirstChild != null && xmlNode.FirstChild.NodeType == XmlNodeType.Text) { textBoxInnerText.Text = xmlNode.FirstChild.Value; } } } else { if (null != e.Node.Tag && e.Node.Tag is EditXmlNode) { EditXmlNode xmlNode = e.Node.Tag as EditXmlNode; if (xmlNode == null) { return; } SetValueByEditXmlNode(xmlNode); } } }
/// <summary> /// 添加属性 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnAddAttribute_Click(object sender, EventArgs e) { if (treeView1.SelectedNode == null || treeView1.SelectedNode.Tag == null) { return; } EditXmlNode xmlNode = treeView1.SelectedNode.Tag as EditXmlNode; DataTable dt = xmlNode.Attribute; Item item = GetItem(); int index = dt.Columns.IndexOf(item.name); if (index >= 0) { dt.Columns.RemoveAt(index); } dt.Columns.Add(item.name, item.type); xmlNode.Attribute = dt; treeView1.SelectedNode.Tag = xmlNode; }
/// <summary> /// 根据树节点TreeNode获取内部类字符串 /// </summary> /// <param name="nodePara"></param> /// <returns></returns> private DataTable GetInnerClassTable(TreeNode nodePara) { DataTable dt = new DataTable(nodePara.Text); dt.Rows.Add(dt.NewRow()); for (int i = 0; i < nodePara.Nodes.Count; i++) { TreeNode node = nodePara.Nodes[i]; if (node.Nodes.Count > 0) { DataTable dt2 = GetInnerClassTable(node); } if (node.Tag != null && node.Tag is EditXmlNode) { EditXmlNode xmlNode = node.Tag as EditXmlNode; dt.Columns.Add(xmlNode.name, xmlNode.ValueType); dt.Rows[0][xmlNode.name] = xmlNode.DefaultValue; } } return(dt); }
/// <summary> /// 获取EditXmlNode值 /// </summary> /// <returns></returns> private EditXmlNode GetEditXmlNode() { EditXmlNode xmlNode = new EditXmlNode(); Item item = GetItem(); xmlNode.ValueType = item.type; xmlNode.DefaultValue = item.value; xmlNode.name = item.name; return xmlNode; }