標籤:winform style blog color io os ar for 資料
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Data.SqlClient;namespace 省市聯動{ public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { //載入省份資訊到第一個ComboBox LoadProvince(); //設定兩個下拉式功能表的預設值為“請選擇” comboBox1.SelectedIndex = 0; comboBox2.SelectedIndex = 0; } private void LoadProvince() { string sql = "select * from TblArea where AreaPid=0"; using (SqlDataReader reader = SqlHelper.ExecuteReader(sql)) { if (reader.HasRows) { while (reader.Read()) { ProvinceItem item = new ProvinceItem(); item.AreaId = reader.GetInt32(0); item.AreaName = reader.GetString(1); item.AreaPid = reader.GetInt32(2); comboBox1.Items.Add(item); } } } //為ComboBox 增加一個“請選擇” ProvinceItem itemDefault = new ProvinceItem(); itemDefault.AreaId = -1; itemDefault.AreaName = "請選擇"; comboBox1.Items.Insert(0, itemDefault); } //下拉式功能表的選擇項改變事件 private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { //擷取目前使用者選擇的項 if (comboBox1.SelectedIndex > 0) { //載入第二個下拉式功能表,資料來源:根據第一個下拉式功能表使用者選擇項的AreaId來查詢該項的所有子項。(子項:指的就是當前選中省份的下的直接城市) //擷取當前選中項的id ProvinceItem item = comboBox1.SelectedItem as ProvinceItem; int areaId = item.AreaId; LoadCity(areaId); } } private void LoadCity(int areaId) { comboBox2.Items.Clear(); string sql = "select * from TblArea where [email protected]"; using (SqlDataReader reader = SqlHelper.ExecuteReader(sql, new SqlParameter("@aid", areaId))) { if (reader.HasRows) { while (reader.Read()) { ProvinceItem item = new ProvinceItem(); item.AreaId = reader.GetInt32(0); item.AreaName = reader.GetString(1); item.AreaPid = reader.GetInt32(2); comboBox2.Items.Add(item); } } } //也加一個【請選擇】 ProvinceItem itemDefault = new ProvinceItem(); itemDefault.AreaId = -1; itemDefault.AreaName = "請選擇"; comboBox2.Items.Insert(0, itemDefault); comboBox2.SelectedIndex = 0; } } public class ProvinceItem { public int AreaId { get; set; } public string AreaName { get; set; } public int AreaPid { get; set; } public override string ToString() { return this.AreaName; } }}
C# winform 選擇項 省市連動