110,545
社区成员
发帖
与我相关
我的任务
分享
public partial class Form1 : Form
{
DataTable dt;//模拟数据库Fill来的数据
TreeView root;//模拟菜单
public Form1()
{
InitializeComponent();
dt = new DataTable();
root = new TreeView();
DataColumn dc1 = new DataColumn("name");
dt.Columns.Add(dc1);
DataColumn dc2 = new DataColumn("parentid", typeof(string));
dc2.AllowDBNull = true;
dt.Columns.Add(dc2);
dt.Rows.Add("File", null);
dt.Rows.Add("Open", "File");
dt.Rows.Add("OpenX", "Open");
dt.Rows.Add("Edit", null);
dt.Rows.Add("Copy", "Edit");
dt.Rows.Add("Cut", "Edit");
}
private void button1_Click(object sender, EventArgs e)
{
CreateMenu();//创建菜单
root.Width = 300;
root.Height = 300;
this.Controls.Add(root);
}
//创建一级菜单
public void CreateMenu()
{
string sql = "parentid is null";
DataRow[] drs = dt.Select(sql);
foreach (DataRow dr in drs)
{
TreeNode node = new TreeNode(dr["name"].ToString());
root.Nodes.Add(node);//创建一级节点
CreateSubMenu(dr, node);//创建子节点
}
}
//创建子菜单
public void CreateSubMenu(DataRow dr, TreeNode node)
{
string menu = dr["name"].ToString();
DataRow[] drs = dr.Table.Select("parentid='" + menu + "'");
foreach (DataRow r in drs)
{
TreeNode n = new TreeNode(r["name"].ToString());
node.Nodes.Add(n);
CreateSubMenu(r, n);//递归创建所有子菜单
}
}
private void Form1_Load(object sender, EventArgs e)
{
}
}