首页 > 代码库 > [Dev]DevExpress之treelist右键菜单实现

[Dev]DevExpress之treelist右键菜单实现

加入BarManager和popupMenu组件:

技术分享

设置popupMenu组件的Manager属性:

技术分享

右键点击popupMenu主键,点击Customize选项加入菜单

技术分享

技术分享

代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Data;
using DevExpress.XtraTreeList;
using DevExpress.XtraTreeList.Nodes;
using DZAMS.DBUtility;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using System.Drawing;
namespace DZAMS.Admin
{
    public partial class MenuInfo_Frm : DevExpress.XtraEditors.XtraForm
    {
        public MenuInfo_Frm()
        {
            InitializeComponent();
 
        }

        private void MenuInfo_Frm_Load(object sender, EventArgs e)
        {
            string strSql = "select * from dbo.DZ_MenuInfo order by PARENTID,ID,SORTINDEX ASC";
            DataTable tblDatas = SqlHelper.ExecuteDataset(SqlHelper.conn, CommandType.Text, strSql).Tables[0];

            //设置字段 
            treeList1.KeyFieldName = "ID";
            treeList1.ParentFieldName = "PARENTID";
            treeList1.DataSource = tblDatas;
            //递归设置图标 
            //DevTreeListView.SetImageIndex(tlCategory, null, 1, 0);
            treeList1.ExpandAll();

            treeList1.LookAndFeel.UseDefaultLookAndFeel = false;
            treeList1.LookAndFeel.UseWindowsXPTheme = true;
        }

        private void treeList1_DoubleClick(object sender, EventArgs e)
        {
            TreeListNode clickedNode = this.treeList1.FocusedNode;
            string name = clickedNode.GetDisplayText("NAME");
            string formname = clickedNode.GetDisplayText("FORMNAME");
        }

        private void treeList1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Right)
            {
                treeList1.ContextMenuStrip = null;
             
                TreeListHitInfo hInfo = treeList1.CalcHitInfo(new Point(e.X, e.Y));
                TreeListNode node = hInfo.Node;
                treeList1.FocusedNode = node;
                if (node != null)
                {
                    treeList1.ContextMenuStrip = contextMenuStrip1;
                }
            }
        }

        private void treeList1_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
        {
            TreeList tree = sender as TreeList;
            if (e.Button == MouseButtons.Right
                    && ModifierKeys == Keys.None
                    && treeList1.State == TreeListState.Regular)
            {
                Point p = new Point(Cursor.Position.X, Cursor.Position.Y);
                TreeListHitInfo hitInfo = tree.CalcHitInfo(e.Location);
                if (hitInfo.HitInfoType == HitInfoType.Cell)
                {
                    tree.SetFocusedNode(hitInfo.Node);
                }

                if (tree.FocusedNode != null)
                {
                    popupMenu1.ShowPopup(p);
                }
            }
        }

        private void barbtnTop_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {

        }

        private void barbtnSub_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {

        }

        private void barbtnModify_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {

        }

        private void barbtnDelete_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            TreeListNode clickedNode = this.treeList1.FocusedNode;
            string name = clickedNode.GetDisplayText("NAME");
            string formname = clickedNode.GetDisplayText("FORMNAME");
            XtraMessageBox.Show("您确定要删除" + formname+"吗?", "警告");
        }
    }
}

效果:

技术分享

技术分享

[Dev]DevExpress之treelist右键菜单实现