麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > C# > 正文

winform樹形菜單無限級分類實例

2020-01-24 03:34:27
字體:
來源:轉載
供稿:網友

以下實現的是一個樹形菜單,每一級對應一類窗口,點擊葉子節點時彈出新的窗口;

用遞歸和委托實現的。

第一部分功能-創建樹形菜單

復制代碼 代碼如下:

/// <summary>
         /// 創建樹形菜單
         /// </summary>
         public void AddTree(int ParentID, TreeNode pNode)
         {
             // 數據庫名字字段
             string strName = "Name";
             // 數據庫ID字段
             string strID = "ID";
             // 數據庫父級ID字段
             string strParentID = "ParentID";
             DataTable dt = typeManager.GetAllList();
             DataView dvTree = new DataView(dt);
             dvTree.RowFilter = strParentID + " = " + ParentID;
             foreach (DataRowView Row in dvTree)
             {
                 TreeNode Node = new TreeNode();
                 if (pNode == null)
                 {
                     Node.Text = Row[strName].ToString();
                     Node.Name = Row[strName].ToString();
                     Node.Tag = Row[strID].ToString();
                     Node.ImageIndex = 1;
                     this.treeView1.Nodes.Add(Node);
                     AddTree(Int32.Parse(Row[strID].ToString()), Node); //再次遞歸
                 }
                 else
                 { 
                     Node.Text = Row[strName].ToString();
                     Node.Name = Row[strName].ToString();
                     Node.Tag = Row[strID].ToString();
                     Node.ImageIndex = 1;
                     pNode.Nodes.Add(Node);
                     AddTree(Int32.Parse(Row[strID].ToString()), Node); //再次遞歸
                 }
             }
         }

         /// <summary>
         /// 主窗體加載
         /// </summary>
         /// <param name="sender"></param>
         /// <param name="e"></param>
         private void frmTree_Load(object sender, EventArgs e)
         {
             // 根節點ID值
             int i = 0;
             this.treeView1.Nodes.Clear();
             AddTree(i, (TreeNode)null);
             treeView1.HideSelection = true;
             treeView1.ShowLines = true;
         }

第二部分功能-文件夾圖標變換:

復制代碼 代碼如下:

private void treeView1_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e)
         {
             ImageChange(e);
         }

         private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
         {
             ImageChange(e);
         }
         /// <summary>
         /// 變換文件夾圖標
         /// </summary>
         /// <param name="e"></param>
         public void ImageChange(TreeNodeMouseClickEventArgs e)
         {
             if (null == e.Node.FirstNode)
             {
                 e.Node.ImageIndex = 0;
                 e.Node.SelectedImageIndex = 0;
             }
             else
             {
                 if (e.Node.IsExpanded)
                 {
                     e.Node.ImageIndex = 0;
                     e.Node.SelectedImageIndex = 0;
                 }
                 else
                 {
                     e.Node.ImageIndex = 1;
                     e.Node.SelectedImageIndex = 1;
                 }
             }
         }

第三部分功能-委托打開新窗口:

復制代碼 代碼如下:

delegate void Mydelegate(string name, string id);
         Mydelegate md = null;
         public frmTree()
         {
             InitializeComponent();
         }
         /// <summary>
         /// 打開新窗口
         /// </summary>
         /// <param name="sender"></param>
         /// <param name="e"></param>
         private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
         {
             // 設置顯示圖標的變換
             if(null== e.Node.FirstNode)
             {
                 e.Node.ImageIndex = 1;
                 e.Node.SelectedImageIndex = 0;
             }
             // 打開新的窗口,每一級對應一類窗口
             if (e.Node != null && null == e.Node.FirstNode)
             {
                 string tag =e.Node.Tag.ToString();
                 string name = e.Node.Text.ToString();
                 switch(e.Node.Level)
                 {
                     case 0:
                         this.md= new Mydelegate(OpenForm1);
                         break;
                     case 1:
                         this.md = new Mydelegate(OpenForm2);
                         break;
                     case 2:
                         this.md = new Mydelegate(OpenForm3);
                         break;
                 }
                 md(name, tag);
             }
         }
         /// <summary>
         /// 打開新窗口
         /// </summary>
         /// <param name="name">傳遞參數</param>
         /// <param name="id">傳遞參數</param>
         public static void OpenForm1(string name,string id)
         {
             Form newForm = new Form1();
             newForm.ShowDialog();
         }
         public static void OpenForm2(string name, string id)
         {
             Form newForm = new Form2();
             newForm.ShowDialog();
         }
         public static void OpenForm3(string name, string id)
         {
             Form newForm = new Form3();
             newForm.ShowDialog();
         }

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 激情亚洲一区二区三区 | 88xx成人永久免费观看 | 黄色试看视频 | 1024亚洲天堂 | 一区二区精品视频在线观看 | 亚洲午夜国产 | 欧美日韩在线免费观看 | 午夜影院在线免费观看 | 一级毛片真人免费播放视频 | 国产二区三区在线播放 | 黄色小视频免费在线观看 | 中文字幕综合在线观看 | 未成年人在线观看 | 婷婷中文字幕一区二区三区 | 九九热精品在线播放 | 欧美爱爱视频 | 久久欧美亚洲另类专区91大神 | 视频在线中文字幕 | 日本a在线观看 | 国产免费美女 | 精品呦女| 成人国产高清 | 日本aaaa片毛片免费观蜜桃 | 久久影城 | 免费久久久久 | 久久草在线观看视频 | 国产成年人在线观看 | 亚洲一区成人在线 | 一本免费视频 | 一区小视频 | 国产亚洲精品久久久久久久久 | 2021免费日韩视频网 | 国产正在播放 | 特级黄色一级毛片 | 天天舔夜夜操 | 久久国产精品免费视频 | 九九看片 | 在线观看中文字幕av | 久久另类视频 | 国产精品av久久久久久无 | 日本免费不卡一区二区 |