⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 explorerform.cs

📁 通用权限管理平台
💻 CS
📖 第 1 页 / 共 4 页
字号:
        {
            SaveFile();
        }
        #endregion

        #region TreeVie相关操作
        /// <summary>
        /// 编辑节点
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void trv_Resources_AfterLabelEdit(object sender, NodeLabelEditEventArgs e)
        {
            if (e.Label == null)
            {
                //如果是新节点
                if (e.Node.Tag != null)
                {
                    e.Node.Remove();
                }

                return;
            }

            if (e.Label != null && e.Label.Trim() == string.Empty && e.Label != e.Node.Text)
            {
                e.CancelEdit = true;
            }
            else
            {
                //如果是新节点
                if (e.Node.Tag != null)
                {
                    wmf_ResourcesGroupTableAdapter.Insert(new Guid(e.Node.Name), e.Label.Trim(), new Guid(e.Node.Parent.Name), "", e.Node.Level);
                    SysLog("添加[" + e.Label + "]节点成功!!", true);
                    e.Node.Tag = null;
                    //trv_Resources.SelectedNode = e.Node;

                }
                else
                {
                    //更新到数据库
                    if (wmf_ResourcesGroupTableAdapter.UpdateGroupName(e.Label, e.Node.Text) == 1)
                    {
                        SysLog("名字[" + e.Node.Text + "]更新为[" + e.Label + "]成功!!", true);
                        toolStripStatus.Text = DateTime.Now.ToString() + " 更新权限组节点名称成功";
                    }
                    else
                    {
                        toolStripStatus.Text = "警告:更新权限组节点名称失败!!";
                    }
                }
            }
        }

        /// <summary>
        /// 键盘操作
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void trv_Resources_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
        {
            //编辑节点
            if (e.KeyCode == Keys.F2)
            {
                trv_Resources.SelectedNode.BeginEdit();
            }

            //编辑节点
            if (e.KeyCode == Keys.F3)
            {
                AddNewGroup();
            }

            //删除节点
            if (e.KeyCode == Keys.Delete)
            {
                if (MessageBox.Show("是否删除权限组[" + trv_Resources.SelectedNode.Text + "]以及下属权限", "删除权限组提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
                {
                    DeleteResourceGroup(trv_Resources.SelectedNode);
                }
            }
        }

        /// <summary>
        /// 删除已选择的权限组
        /// </summary>
        private void DeleteResourceGroup(TreeNode selectNode)
        {

            try
            {
                ///遍历,把子节点全部删除
                foreach (TreeNode child in selectNode.Nodes)
                {
                    DeleteResourceGroup(child);
                }

                //删除Resources
                DataResources.wmf_ResourcesRow[] resourceRows = (DataResources.wmf_ResourcesRow[])this.dataResources.wmf_Resources.Select("[ResourceGroupId]='" + selectNode.Name + "'");

                foreach (MemberShipDAL.DataObject.DataResources.wmf_ResourcesRow resourceRow in resourceRows)
                {
                    DataResources.wmf_PrivilegeRow[] privilegeRows = (DataResources.wmf_PrivilegeRow[])this.dataResources.wmf_Privilege.Select("[ResourcesId]='" + resourceRow.ResourcesId + "'");
                    foreach (DataResources.wmf_PrivilegeRow privilegeRow in privilegeRows)
                    {
                        //删除PrivilegeInRoles
                        new PrivilegeInRolesBLL().DeletePrivilegeInRoles(privilegeRow.PrivilegeId);
                    }
                    //删除Privilege
                    wmf_PrivilegeTableAdapter.DeleteByResourceId(resourceRow.ResourcesId);
                }
                wmf_ResourcesTableAdapter.DeleteByGroupId(new Guid(selectNode.Name));
                wmf_ResourcesGroupTableAdapter.DeleteByGroupId(new Guid(selectNode.Name));
                selectNode.Remove();

                SysLog("删除节点[" + selectNode.Name + "]成功", true);

            }
            catch (Exception)
            {
                toolStripStatus.Text = "警告:删除失败!!";
                throw;
            }
        }


        private void trv_Resources_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
        {
            if (e.Button == MouseButtons.Right)
            {
                trv_Resources.SelectedNode = e.Node;
            }

        }


        public void AddNewGroup()
        {
            TreeNode newNode = new TreeNode("新建权限组");
            newNode.Name = Guid.NewGuid().ToString();
            newNode.Tag = "NewGroup";
            trv_Resources.SelectedNode.Nodes.Add(newNode);
            trv_Resources.SelectedNode.Expand();
            newNode.BeginEdit();
        }

        #endregion

        #region TreeView拖拽功能

        private void trv_Resources_ItemDrag(object sender, ItemDragEventArgs e)
        {
            // 获得选择的节点
            this.dragNode = (TreeNode)e.Item;
            this.trv_Resources.SelectedNode = this.dragNode;

            // 为了拖拽得图像,重置 image list
            this.imageListDrag.Images.Clear();
            this.imageListDrag.ImageSize = new Size(this.dragNode.Bounds.Size.Width + this.trv_Resources.Indent, this.dragNode.Bounds.Height);

            // 创建一个新的图像
            //这个图像包含了要拖拽的节点
            Bitmap bmp = new Bitmap(this.dragNode.Bounds.Width + this.trv_Resources.Indent, this.dragNode.Bounds.Height);

            // 从bitmap获取Graphics
            Graphics gfx = Graphics.FromImage(bmp);

            // 绘制节点图标到bitmap
            gfx.DrawImage(this.imgFolder.Images[0], 0, 0);

            // 绘制节点名称到图片
            gfx.DrawString(this.dragNode.Text,
                this.trv_Resources.Font,
                new SolidBrush(this.trv_Resources.ForeColor),
                (float)this.trv_Resources.Indent, 1.0f);

            //把图片加入ImageList
            this.imageListDrag.Images.Add(bmp);

            // 获得客户端鼠标节点
            Point p = this.trv_Resources.PointToClient(Control.MousePosition);

            //计算鼠标和节点边缘的距离
            int dx = p.X + this.trv_Resources.Indent - this.dragNode.Bounds.Left - 15;
            int dy = p.Y - this.dragNode.Bounds.Top + 48;

            // 开始拖拽图片
            if (DragHelper.ImageList_BeginDrag(this.imageListDrag.Handle, 0, dx, dy))
            {
                // 开始拖拽
                this.trv_Resources.DoDragDrop(bmp, DragDropEffects.Move);
                // 停止拖拽
                DragHelper.ImageList_EndDrag();
            }
        }

        private void trv_Resources_DragDrop(object sender, DragEventArgs e)
        {
            DragHelper.ImageList_DragLeave(this.trv_Resources.Handle);

            //获得拖拽的节点
            TreeNode dropNode = this.trv_Resources.GetNodeAt(this.trv_Resources.PointToClient(new Point(e.X, e.Y)));

            // 如果目标节点不等于本身,就添加到其子节点
            if (this.dragNode != dropNode)
            {
                if (dropNode.Name != dragNode.Parent.Name)
                {

                    //在此把数据库更新
                    if (this.wmf_ResourcesGroupTableAdapter.UpdateParentId(new Guid(dropNode.Name), new Guid(dragNode.Name)) == 1)
                    {
                        //提示成功
                        SysLog("移动[" + dragNode.Text + "]到[" + dropNode.Text + "]成功!!", true);
                        toolStripStatus.Text = DateTime.Now.ToString() + "节点移动成功!!";
                    }
                    else
                    {
                        toolStripStatus.Text = DateTime.Now.ToString() + "节点移动失败";

                    }
                }
                else
                {
                    MessageBox.Show("无法移动[" + dragNode.Text + "],目标节点和源节点相同", "移动节点时出错", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;

                }
                // 取出拖拽节点的父节点
                if (this.dragNode.Parent == null)
                {
                    this.trv_Resources.Nodes.Remove(this.dragNode);
                }
                else
                {
                    this.dragNode.Parent.Nodes.Remove(this.dragNode);
                }

                // 添加节点到目标节点
                dropNode.Nodes.Add(this.dragNode);
                dropNode.Expand();




                // 把拖拽的节点设为空
                this.dragNode = null;

                //取消滚动的计时器
                this.timerExpand.Enabled = false;
                this.timer.Enabled = false;
            }
        }

        private void trv_Resources_DragEnter(object sender, DragEventArgs e)
        {
            DragHelper.ImageList_DragEnter(this.trv_Resources.Handle, e.X - this.trv_Resources.Left, e.Y - this.trv_Resources.Top);

            // 滚动
            this.timer.Enabled = true;
            this.timerExpand.Enabled = true;
        }

        private void trv_Resources_DragLeave(object sender, EventArgs e)
        {
            DragHelper.ImageList_DragLeave(this.trv_Resources.Handle);

            // 停止滚动
            this.timer.Enabled = false;
            this.timerExpand.Enabled = false;

        }

        private void trv_Resources_DragOver(object sender, DragEventArgs e)
        {
            //计算位置并且移动图片
            Point formP = this.PointToClient(new Point(e.X, e.Y));
            DragHelper.ImageList_DragMove(formP.X - this.trv_Resources.Left, formP.Y - this.trv_Resources.Top);

            // 获得真正的移动节点
            TreeNode dropNode = this.trv_Resources.GetNodeAt(this.trv_Resources.PointToClient(new Point(e.X, e.Y)));
            if (dropNode == null)
            {
                e.Effect = DragDropEffects.None;
                return;
            }

            e.Effect = DragDropEffects.Move;

            // 如果鼠标在新的节点上,那就选中
            if (this.tempDropNode != dropNode)
            {
                DragHelper.ImageList_DragShowNolock(false);
                this.trv_Resources.SelectedNode = dropNode;
                DragHelper.ImageList_DragShowNolock(true);
                tempDropNode = dropNode;
            }

            //避免移动到自己的子节点上面
            TreeNode tmpNode = dropNode;
            while (tmpNode.Parent != null)
            {
                if (tmpNode.Parent == this.dragNode)
                    e.Effect = DragDropEffects.None;
                tmpNode = tmpNode.Parent;
            }
        }

        private void trv_Resources_GiveFeedback(object sender, GiveFeedbackEventArgs e)
        {
            if (e.Effect == DragDropEffects.Move)
            {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -