一、父选择窗口
二、子窗口提供选择FrmSelectAreas
1、数据准备:
在数据库中有一张表Areas字段为:AID,AName,APid;
AID为字段地区编号,AName为地区名称,APid为地区父级AID.
2、FrmSelectAreas窗体中,递归遍历绑定数据

1 void BindParent() //绑定父节点 2 { 3 //添加父节点 4 TreeNode parent = new TreeNode(); 5 parent.Text = "全国"; 6 parent.Tag = 0; 7 tvAreas.Nodes.Add(parent); 8 //获取数据集 9 List<Areas> list = SQLHelper.GetALLAreas(); 10 //子节点绑定 11 BindChildRen(parent,list); 12 parent.Expand();//展开父节点 13 } 14 //子节点绑定 15 void BindChildRen(TreeNode parent,List<Areas> list) 16 { 17 //得到父节点的AId 18 int Aid = Convert.ToInt32(parent.Tag); 19 //遍历 20 foreach (Areas item in list) 21 { 22 if (Aid == item.APid) 23 { 24 TreeNode tn = new TreeNode(); 25 tn.Text = item.AName; 26 tn.Tag = item.AID; 27 parent.Nodes.Add(tn); 28 29 BindChildRen(tn,list); 30 } 31 } 32 }
然后,在窗体加载中BindParent();
2、获取地区全名称:
void GetAreasText(TreeNode tn) { if (tn.Parent != null) { GetAreasText(tn.Parent); } strSelected += tn.Text + "-"; //strSelected为窗体的public字段,用于传给父窗体数据。 }
3、单击确认时,传回数据,关闭当前窗体
GetAreasText(tvAreas.SelectedNode);//获取数据 strSelected = strSelected.TrimEnd('-'); if (!string.IsNullOrEmpty(strSelected)) { this.DialogResult = DialogResult.OK; }