菜单数据获取
private List<MyMenu> li_men = new List<MyMenu>(); //记录当前节点信息
private void Form1_Load(object sender, EventArgs e)
{
SetMenu(); //设置菜单
}
private void SetMenu() {
string sql = "";
sql = "select id,m_no,m_name,m_level from tb_menu where flag=1";
DataTable dt = BaseMethod.GetDBData(sql,"temp_menu");
if (dt != null)
{
//建立顶级节点
TreeNode topNode = new TreeNode();
topNode = treeView1.Nodes.Add("我的菜单");
for (int i = 0; i < dt.Rows.Count; i++)
{
DataRow dr = dt.Rows[i];
if (dr[1].ToString().Contains("mode"))
{
SetMenuOne(topNode, dr[2].ToString().Trim(), dr[1].ToString().Trim());
}
else {
if (li_men.Count > 0)
{
SetMenuTwo(topNode, dr[2].ToString().Trim(), dr[1].ToString().Trim());
}
else {
MessageBox.Show("还么有设置上一级菜单");
}
}
}
treeView1.ExpandAll();
treeView1.CheckBoxes = false;
Font font = new Font("UTF-8", 10);//UTF-8是字体的编码格式,2是字体大小
treeView1.Font = font;
}
else
{
//建立顶级节点
TreeNode topNode = new TreeNode();
topNode = treeView1.Nodes.Add("菜单数据获取失败");
}
}
/// <summary>
/// 设置一级菜单
/// </summary>
private void SetMenuOne(TreeNode tn ,string name,string no) {
TreeNode tempnode = new TreeNode(name);
tn.Nodes.Add(tempnode);
li_men.Add(new MyMenu(tempnode,no,name));
}
/// <summary>
/// 设置二级菜单
/// </summary>
/// <param name="tn"></param>
/// <param name="name"></param>
/// <param name="no"></param>
private void SetMenuTwo(TreeNode tn, string name, string no) {
if (li_men.Count > 0) {
for(int i = 0; i < li_men.Count; i++)
{
if (li_men[i].menu_no.ToString().Trim().Substring(0, 2) == no.Substring(0, 2))
{
//TreeNode tempnode = new TreeNode(name);
foreach (TreeNode tn1 in treeView1.Nodes) {
// tn1 是节点 我的菜单
if (tn1 != null) {
foreach (TreeNode tn2 in tn1.Nodes)
{
// tn1.Name 是空
if (tn2.Text == li_men[i].menu_name)
{
tn2.Nodes.Add(name);
}
}
}
}
}
}
}
}
/// <summary>
/// 用来记录已经加载的菜单
/// </summary>
public class MyMenu{
public TreeNode menu_node { get; set; }
public string menu_no { get; set; }
public string menu_name { get; set; }
public MyMenu(TreeNode mn, string mno,string mname) {
menu_node = mn;menu_no = mno; menu_name = mname;
}
}
基本窗口切换
FormChildren.Form1 f1;
FormChildren.Form2 f2;
private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
string menu_name = string.Empty;
menu_name = e.Node.Text;
//MessageBox.Show(menu_name);
CloseForm();
switch (menu_name) {
case "菜单1":
f1 = new FormChildren.Form1();
f1.TopLevel = false; //设置窗口为非顶级窗口
f1.Parent = this.groupBox2; //绑定窗口的父窗口为当前新建TabPage标签
f1.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
f1.Dock = DockStyle.Fill; //Fill 填充模式
f1.Show();
break;
case "菜单2":
f2 = new FormChildren.Form2();
f2.TopLevel = false; //设置窗口为非顶级窗口
f2.Parent = this.groupBox2; //绑定窗口的父窗口为当前新建TabPage标签
f2.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
f2.Dock = DockStyle.Fill; //Fill 填充模式
f2.Show();
break;
default:
MessageBox.Show("窗体名称"+menu_name+" 还没有设置","提示");
break;
}
}
private void CloseForm()
{
if (f1 != null) { f1.Close(); }
if (f2 != null) { f2.Close(); }
}