public void Edit(object sender, System.EventArgs e) { if (Nodes.Count > 0 && SelectedNode != null && parent.LabelEdit) { editingNode = (XmlTreeNode)SelectedNode; if (editingNode.ConnectedXmlElement != null) { if (!closingHandlerAssigned) { Form parentForm = FindForm(); parentForm.Closing += new CancelEventHandler(parent.form_Closing); closingHandlerAssigned = true; } int height = editingNode.Bounds.Height; int width = editingNode.Bounds.Width; int left = editingNode.Bounds.Left; int top = editingNode.Bounds.Top; editingNode.ExpandAll(); if (editingNode.ConnectedXmlElement.HasChildNodes && editingNode.ConnectedXmlElement.FirstChild.NodeType != XmlNodeType.Text) { height = editingNode.NextNode.Bounds.Bottom - editingNode.Bounds.Top; width = Width - left; } editBox = new TextBox(); editBox.Multiline = true; editBox.BorderStyle = BorderStyle.FixedSingle; editBox.Leave += new EventHandler(editBox_Leave); editBox.KeyUp += new KeyEventHandler(editBox_KeyUp); editBox.SetBounds(left, top, width, height); editingNode.RecurseSubNodes(editingNode.Parent); editBox.Text = editingNode.SelfAndChildren; Controls.Add(editBox); editBox.Focus(); } } }
private void RecurseAndAssignNodes( XmlNode elem ) { string attrs = string.Empty; XmlTreeNode addedNode = null; if ( elem.NodeType == XmlNodeType.Element ) { foreach ( XmlAttribute attr in elem.Attributes ) { attrs += " " + attr.Name + "=\"" + attr.Value + "\""; } } if ( elem.Equals( document.DocumentElement ) ) { addedNode = new XmlTreeNode( "<" + elem.Name + attrs + ">", elem ); Nodes.Add( addedNode ); InnerXmlTreeView.CurrentNode = addedNode; Nodes.Add( new XmlTreeNode( "</" + elem.Name + ">", null ) ); } else if ( elem.HasChildNodes && elem.ChildNodes[0].NodeType == XmlNodeType.Text ) { addedNode = new XmlTreeNode( "<" + elem.Name + attrs + ">" + elem.InnerText + "</" + elem.Name + ">", elem ); InnerXmlTreeView.CurrentNode.Nodes.Add( addedNode ); InnerXmlTreeView.CurrentNode = addedNode; } else if ( elem is XmlElement && ( (XmlElement) elem ).IsEmpty ) { addedNode = new XmlTreeNode( "<" + elem.Name + attrs + "/>", elem ); InnerXmlTreeView.CurrentNode.Nodes.Add( addedNode ); InnerXmlTreeView.CurrentNode = addedNode; } else { addedNode = new XmlTreeNode( "<" + elem.Name + attrs + ">", elem ); InnerXmlTreeView.CurrentNode.Nodes.Add( addedNode ); InnerXmlTreeView.CurrentNode = addedNode; InnerXmlTreeView.CurrentNode.Parent.Nodes.Add( new XmlTreeNode( "</" + elem.Name + ">", null ) ); } foreach ( XmlNode child in elem.ChildNodes ) { if ( child.NodeType == XmlNodeType.Element ) { RecurseAndAssignNodes( child ); } else if ( child.NodeType == XmlNodeType.Comment ) { InnerXmlTreeView.CurrentNode.Nodes.Add( new XmlTreeNode( child.OuterXml, child ) ); } } if ( InnerXmlTreeView.CurrentNode.Parent != null ) { InnerXmlTreeView.CurrentNode = InnerXmlTreeView.CurrentNode.Parent; } }
public void Edit(object sender, System.EventArgs e) { if ( Nodes.Count > 0 && SelectedNode != null && parent.LabelEdit ) { editingNode = (XmlTreeNode) SelectedNode; if ( editingNode.ConnectedXmlElement != null ) { if ( !closingHandlerAssigned ) { Form parentForm = FindForm(); parentForm.Closing += new CancelEventHandler( parent.form_Closing ); closingHandlerAssigned = true; } int height = editingNode.Bounds.Height; int width = editingNode.Bounds.Width; int left = editingNode.Bounds.Left; int top = editingNode.Bounds.Top; editingNode.ExpandAll(); if ( editingNode.ConnectedXmlElement.HasChildNodes && editingNode.ConnectedXmlElement.FirstChild.NodeType != XmlNodeType.Text ) { height = editingNode.NextNode.Bounds.Bottom - editingNode.Bounds.Top; width = Width - left; } editBox = new TextBox(); editBox.Multiline = true; editBox.BorderStyle = BorderStyle.FixedSingle; editBox.Leave += new EventHandler( editBox_Leave ); editBox.KeyUp += new KeyEventHandler( editBox_KeyUp ); editBox.SetBounds( left, top, width, height ); editingNode.RecurseSubNodes( editingNode.Parent ); editBox.Text = editingNode.SelfAndChildren; Controls.Add( editBox ); editBox.Focus(); } } }