📄 explorerform.cs
字号:
{
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 + -