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);
                }
            }
        }

     
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值