treelist右键菜单功能contextMenuStrip

1.新建表
2.新建Map表
3.新建SQL中的表

选择右键菜单控件
1.添加项
2.在DroDownItem(集合)中添加项
3.Classify.DropDown.Items.Add();
添加显示文本
Classify.DropDown.ItemClick += DropDown+ItemClick;
4.添加显示文本的集合
Classify.DropDownItem.AddRange();
将ToolStripItem控件的数组添加到集合中

(控件中有属性可以添加下拉菜单中的数据,也可通过代码添加)

 //加载时从服务器中获取右键菜单DropDown中的数据
 //从服务器获取分类列表
            var lstclassify = JsonData<List<MaterialClassify>>(AppSession.WindowsDataService.GetMaterialClassify(JsonData(null)));

            foreach (var item in lstclassify)
            {
                Classify.DropDown.Items.Add(item.Classify);
            }
            Classify.DropDown.ItemClicked += DropDown_ItemClicked;
//右键菜单contextMenuStrip
//treelist中的Click事件
 private void treeList1_MouseClick(object sender, MouseEventArgs e)
        {
            //this.contextMenuStrip1.Show();

            treeList1.SetFocusedNode(null);
            //如果是鼠标右键点击
            if (e.Button == MouseButtons.Right)
            {
                this.treeList1.ContextMenuStrip = null;
                var hitInfo = this.treeList1.CalcHitInfo(e.Location);
                mSelectedNode = hitInfo.Node;
                treeList1.SetFocusedNode(mSelectedNode);
                treeList1.ContextMenuStrip = this.contextMenuStrip1;
            }
        }    
    
        private void contextMenuStrip1_MouseClick(object sender, MouseEventArgs e)
        {
            var clickedItem = this.contextMenuStrip1.GetItemAt(e.X, e.Y);
            if (clickedItem!=null)
            {
                Console.WriteLine(clickedItem.Name);
            }
        }
        
//右键菜单中的点击功能,如点击右键,新建文件夹。右键菜单有个DropDownItem事件
 private void DropDown_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
        {
            if (e.ClickedItem != null)
            {
                string result = string.Empty;
                lstCheckedNodes.Clear();
                lstCheckedMaterial.Clear();

                GetCheckedNodes(this.treeList1.Nodes);

                if (lstCheckedMaterial != null && lstCheckedMaterial.Count != 0)
                {
                    foreach (var marItem in lstCheckedMaterial)
                    {
                        var classify = new MaterialClassify();
                        classify.Classify = e.ClickedItem.Text;
                        marItem.Classify = classify;
                        //marItem.Classify = new MaterialClassify() { Classify = e.ClickedItem.Text };
                    }
                    result = AppSession.WindowsDataService.SaveBomClassify(JsonData(lstCheckedMaterial));

                    foreach (TreeListNode nodeItem in lstCheckedNodes)
                    {
                        var checkedMat = (Objects.Domain.Material)nodeItem.GetValue("Material");
                        nodeItem.SetValue("Classify", checkedMat?.Classify.Classify);
                        nodeItem.CheckState = CheckState.Unchecked;
                    }
                }
            }
        }


 List<TreeListNode> lstCheckedNodes = new List<TreeListNode>();
 List<Objects.Domain.Material> lstCheckedMaterial = new List<Objects.Domain.Material>();
  
  private void GetCheckedNodes(TreeListNodes nodes)
        {
            foreach (TreeListNode item in nodes)
            {
                if (item.Checked)
                {
                    var checkedMat = (Objects.Domain.Material)item.GetValue("Material");
                    lstCheckedMaterial.Add(checkedMat);
                    lstCheckedNodes.Add(item);
                }
                if (item.Nodes != null && item.Nodes.Count != 0)
                {
                    GetCheckedNodes(item.Nodes);
                }
            }
        }

     

猜你喜欢

转载自blog.csdn.net/lemonemmm/article/details/82180428