省市区联动小功能

通过读取XML文档数据,实现省市区联动,主要方便个人快速使用,仅做参考~

添加三个ComboBox:cbx_Province、cbx_City、cbx_CityArea,代码如下:

省市区联动小功能
using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Xml;

namespace ApplicationOne
{
    public partial class Form1 : Form
    {
        XmlDocument doc = new XmlDocument();
        List<string> ListString = new List<string>();

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            try
            {
                doc.Load("http://files.cnblogs.com/Interkey/%E7%9C%81%E5%B8%82%E5%8C%BA.xml");
                XmlNode provinces = doc.SelectSingleNode("/ProvinceCity");

                //本文地址:http://www.cnblogs.com/Interkey/p/3512910.html
                cbx_Province.Items.Clear();
                foreach (XmlNode province in provinces.ChildNodes)
                {
                    cbx_Province.Items.Add(province.Name);
                }
                if (cbx_Province.Items.Count >= 0)
                {
                    cbx_Province.SelectedIndex = 0;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void cbx_Province_SelectedIndexChanged(object sender, EventArgs e)
        {
            this.cbx_City.Items.Clear();
            string xpath = string.Format("/ProvinceCity/{0}/City", cbx_Province.SelectedItem.ToString());
            XmlNodeList cities = doc.SelectNodes(xpath);
            //本文地址:http://www.cnblogs.com/Interkey/p/3512910.html
            foreach (XmlNode city in cities)
            {
                cbx_City.Items.Add(city.Attributes["Name"].Value);
            }
            if (cbx_City.Items.Count >= 0)
            {
                cbx_City.SelectedIndex = 0;
            }
        }

        private void cbx_City_SelectedIndexChanged(object sender, EventArgs e)
        {
            cbx_CityArea.Items.Clear();
            string xpath = string.Format("/ProvinceCity/{0}/City[@Name=‘{1}‘]/CityArea",
                cbx_Province.SelectedItem.ToString(), cbx_City.SelectedItem.ToString());
            XmlNodeList CityAreas = doc.SelectNodes(xpath);
            //本文地址: http://www.cnblogs.com/Interkey/p/3512910.html
            foreach (XmlNode area in CityAreas)
            {
                cbx_CityArea.Items.Add(area.Attributes["Name"].Value);
            }

            if (cbx_CityArea.Items.Count >= 0)
            {
                cbx_CityArea.SelectedIndex = 1;
            }
        }
    }
}
省市区联动小功能

 效果图:

省市区联动小功能

XML地址:http://files.cnblogs.com/Interkey/%E7%9C%81%E5%B8%82%E5%8C%BA.xml

本文参考了以下内容:
省市区三联动的winform程序

省市区联动小功能

上一篇:程序的状态保存和恢复


下一篇:学习笔记 - 控制器