一:搭建窗体
所需控件:TreeView、Label、TextBox
效果示图:
二:项目要求
1. 点击左侧树状菜单其中内容,右侧则将其所点信息输出显示。
2.创建表示地址信息的实体类,并使用泛型集合保存XML文件中的信息。
三:项目分析+代码实现
1.解析xml文件,将内容绑定到TreeView控件上。(难点,也是该项目的核心所在)
既然要解析xml,在C#编程中,我们就要用到XmlDocument对象来获取XML文件中的节点值,
从上图可以看到,点击每个不同的节点,右侧TextBox控件的Text会呈现不同的值,我们要怎么
来实现这一功能呢?这里我就用foreach循环来实现。
//解析xml文件
XmlDocument xml = new XmlDocument();
xml.Load("Address.xml"); //获取xml文件路径
XmlNode node1 = xml.DocumentElement; //获取xml文件根节点
string name1 = node1.Attributes["name"].Value;//获取该节点的值
TreeNode node2 = new TreeNode(name1);
treeView1.Nodes.Add(node2);//获取树节点集合
//获取节点的所有子节点
foreach (XmlNode item in node1.ChildNodes )
{
string name2=item .Attributes["name"].Value;
TreeNode node3 = new TreeNode(name2);
node2.Nodes.Add(node3);
foreach (XmlNode item2 in item.ChildNodes )
{
//获取该节点值
string name3=item2.Attributes["name"].Value ;
string smid=item2.Attributes["smid"].Value ;
TreeNode node4 = new TreeNode(name3);
node3.Nodes.Add(node4);
foreach (XmlNode item3 in item2.ChildNodes )
{
TreeNode node5 = new TreeNode(item3 .InnerText );
node4.Nodes.Add(node5);//获取树节点对象集合
if (item3.Name == "fjname")//当在派生类中被重写时,获取节点限定名
{
DiZhi dz=new DiZhi ();
dz.Name = name1;
dz.Juwei = name2;
dz.Jianzhu = name3;
dz.Fjname = item3.InnerText;
node5.Tag = dz;
}
}
2.接下来就是TreeView单击事件了。
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
if (treeView1.SelectedNode.Level == 3)
{
DiZhi st = (DiZhi)treeView1.SelectedNode.Tag;
txtjiedao.Text = st.Name;
txtjuweihui.Text = st.Juwei;
txtloudao.Text = st.Jianzhu;
txtfangjianhao.Text = st.Fjname;
}
}