Having trouble getting help?
Contact Support
Contact Support
Data Binding in Windows Forms MultiColumn TreeView
21 Jan 202510 minutes to read
MultiColumnTreeView does not have direct option to load/save from XML file. This below section will help to load/save MultiColumnTreeView from XML.
Example
private void LoadTreeViewAdvXML()
{
XmlDocument xDoc = new XmlDocument();
xDoc.Load("TreeView.xml");
multiColumnTreeView1.Nodes.Clear();
multiColumnTreeView1.Nodes.Add(new
TreeNodeAdv(xDoc.DocumentElement.Name));
TreeNodeAdv tNode = new TreeNodeAdv();
tNode = (TreeNodeAdv)multiColumnTreeView1.Nodes[0];
LoadFromXML(xDoc.DocumentElement, tNode);
multiColumnTreeView1.ExpandAll();
}
private void LoadFromXML(XmlNode xmlNode, TreeNodeAdv treeNode)
{
XmlNode xNode;
TreeNodeAdv tNode;
XmlNodeList xNodeList;
if (xmlNode.HasChildNodes)
{
xNodeList = xmlNode.ChildNodes;
for (int x = 0; x <= xNodeList.Count - 1; x++)
{
xNode = xmlNode.ChildNodes[x];
treeNode.Nodes.Add(new TreeNodeAdv(xNode.Name));
tNode = treeNode.Nodes[x];
LoadFromXML(xNode, tNode);
}
}
else
treeNode.Text = xmlNode.OuterXml.Trim();
}
/// <summary>
/// To write details in XML Elements
/// </summary>
private XmlTextWriter XmlTextWriter;
/// <summary>
/// To save MultiColumnTreeView node information to XML File
/// </summary>
public void ExportToXML(MultiColumnTreeView tree, string filename)
{
XmlTextWriter = new XmlTextWriter(filename, System.Text.Encoding.UTF8);
XmlTextWriter.WriteStartDocument();
XmlTextWriter.WriteStartElement(multiColumnTreeView1.Nodes[0].Text);
foreach (TreeNodeAdv node in tree.Nodes)
{
SaveToXML(node.Nodes);
}
XmlTextWriter.WriteEndElement();
XmlTextWriter.Close();
}
/// <summary>
/// Iterate function helps to save TreeNodeAdv information to XML
/// </summary>
private void SaveToXML(TreeNodeAdvCollection menu)
{
foreach (TreeNodeAdv node in menu)
{
if (node.Nodes.Count > 0)
{
XmlTextWriter.WriteStartElement(node.Text);
SaveToXML(node.Nodes);
XmlTextWriter.WriteEndElement();
}
else
{
XmlTextWriter.WriteString(node.Text);
}
}
}
Private Sub LoadTreeViewAdvXML()
Dim xDoc As XmlDocument = New XmlDocument()
xDoc.Load("TreeView.xml")
multiColumnTreeView1.Nodes.Clear()
multiColumnTreeView1.Nodes.Add(New TreeNodeAdv(xDoc.DocumentElement.Name))
Dim tNode As TreeNodeAdv = New TreeNodeAdv()
tNode = CType(multiColumnTreeView1.Nodes(0), TreeNodeAdv)
LoadFromXML(xDoc.DocumentElement, tNode)
multiColumnTreeView1.ExpandAll()
End Sub
Private Sub LoadFromXML(ByVal xmlNode As XmlNode, ByVal treeNode As TreeNodeAdv)
Dim xNode As XmlNode
Dim tNode As TreeNodeAdv
Dim xNodeList As XmlNodeList
If xmlNode.HasChildNodes Then
xNodeList = xmlNode.ChildNodes
For x As Integer = 0 To xNodeList.Count - 1
xNode = xmlNode.ChildNodes(x)
treeNode.Nodes.Add(New TreeNodeAdv(xNode.Name))
tNode = treeNode.Nodes(x)
LoadFromXML(xNode, tNode)
Next
Else
treeNode.Text = xmlNode.OuterXml.Trim()
End If
End Sub
Private XmlTextWriter As XmlTextWriter
Public Sub ExportToXML(ByVal tree As MultiColumnTreeView, ByVal filename As String)
XmlTextWriter = New XmlTextWriter(filename, System.Text.Encoding.UTF8)
XmlTextWriter.WriteStartDocument()
XmlTextWriter.WriteStartElement(multiColumnTreeView1.Nodes(0).Text)
For Each node As TreeNodeAdv In tree.Nodes
SaveToXML(node.Nodes)
Next
XmlTextWriter.WriteEndElement()
XmlTextWriter.Close()
End Sub
Private Sub SaveToXML(ByVal menu As TreeNodeAdvCollection)
For Each node As TreeNodeAdv In menu
If node.Nodes.Count > 0 Then
XmlTextWriter.WriteStartElement(node.Text)
SaveToXML(node.Nodes)
XmlTextWriter.WriteEndElement()
Else
XmlTextWriter.WriteString(node.Text)
End If
Next
End Sub