📄 explorerform.cs
字号:
// 在拖拽的时候,显示鼠标图标
e.UseDefaultCursors = false;
this.trv_Resources.Cursor = Cursors.Default;
}
else e.UseDefaultCursors = true;
}
private void timer_Tick(object sender, EventArgs e)
{
// 获得鼠标所在位置的节点
Point pt = PointToClient(Control.MousePosition);
TreeNode node = this.trv_Resources.GetNodeAt(pt);
if (node == null) return;
// 如果鼠标靠近上面,就向上滚动
if (pt.Y < 30)
{
// 选择上面一个节点
if (trv_Resources.TopNode.PrevNode != null)
{
node = trv_Resources.TopNode.PrevNode;
// 隐藏拖拽的图片
DragHelper.ImageList_DragShowNolock(false);
// 拖拽并且刷新
node.EnsureVisible();
this.trv_Resources.Refresh();
// 显示图片
DragHelper.ImageList_DragShowNolock(true);
}
}
// 如果鼠标靠近下面,就向下滚动
else if (pt.Y > this.trv_Resources.Size.Height - 30)
{
if (node.NextVisibleNode != null)
{
node = node.NextVisibleNode;
DragHelper.ImageList_DragShowNolock(false);
node.EnsureVisible();
this.trv_Resources.Refresh();
DragHelper.ImageList_DragShowNolock(true);
}
}
}
void timerExpand_Tick(object sender, EventArgs e)
{
if (trv_Resources.SelectedNode != null)
trv_Resources.SelectedNode.Expand();
}
#endregion
#region DataGridView错误提示
private void dg_Resources_DataError(object sender, DataGridViewDataErrorEventArgs e)
{
MessageBox.Show("您插入的数据有误,详细信息如下:\n" + e.Exception.Message, "插入数据错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
private void dg_Operate_DataError(object sender, DataGridViewDataErrorEventArgs e)
{
MessageBox.Show("您插入的数据有误,详细信息如下:\n" + e.Exception.Message, "插入数据错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
#endregion
#region Resource资源组的DataGridView事件
/// <summary>
/// 自动把中文名复职到英文名单元格内
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void dg_Resources_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
dg_Resources_CellEndEdit(sender, e);
}
private void dg_Resources_CellLeave(object sender, DataGridViewCellEventArgs e)
{
dg_Resources_CellEndEdit(sender, e);
}
/// <summary>
/// 单元格快捷键
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void dg_Resources_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{
//Ctrl+S,保存当前记录
if (e.KeyData == (Keys.Control | Keys.S))
btn_ResSave_Click(sender, e);
}
private void dg_Resources_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
string columnCNName = "resourcesCNNameDataGridViewTextBoxColumn";
string columnName = "resourcesNameDataGridViewTextBoxColumn";
string copyValue;
if ((e.RowIndex > -1) && (e.ColumnIndex > -1) && (dg_Resources.Rows[e.RowIndex].Cells[columnCNName].Value != null))
{
copyValue = dg_Resources.Rows[e.RowIndex].Cells[columnCNName].Value.ToString().Trim();
if ((dg_Resources.Columns[e.ColumnIndex].Name == columnCNName) && (dg_Resources.Rows[e.RowIndex].Cells[columnName].Value.ToString() == string.Empty))
{
dg_Resources.Rows[e.RowIndex].Cells[columnName].Value = copyValue;
}
}
}
/// <summary>
/// 用户删除行的时候,要删除与其相关的记录
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void dg_Resources_UserDeletingRow(object sender, DataGridViewRowCancelEventArgs e)
{
if ((!e.Row.IsNewRow) && (this.wmfPrivilegeBindingSource.Count != 0))
{
if (MessageBox.Show("请确认是否删除与[" + e.Row.Cells["resourcesCNNameDataGridViewTextBoxColumn"].Value.ToString() + "]相关的记录?", "删除相关记录", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
DeletePrivilegeByResourceId(new Guid(e.Row.Cells["resourcesIdDataGridViewTextBoxColumn"].Value.ToString()));
}
else
{
e.Cancel = true;
}
}
}
/// <summary>
/// 用户编辑行的时候,删除相关记录
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void dg_Resources_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)
{
this.wmfPrivilegeBindingSource.Filter = "[ResourcesId]='" + dg_Resources.Rows[e.RowIndex].Cells["resourcesIdDataGridViewTextBoxColumn"].Value.ToString() + "'";
if ((!dg_Resources.Rows[e.RowIndex].IsNewRow) && (this.wmfPrivilegeBindingSource.Count != 0) && dg_Resources.Columns[e.ColumnIndex].Name != "descriptionDataGridViewTextBoxColumn" && dg_Resources.Columns[e.ColumnIndex].Name != "ResourcesOrder" && dg_Resources.Columns[e.ColumnIndex].Name != "ResourceGroupId")
{
if (MessageBox.Show("在编辑关键信息以前,请确认是否删除与[" + dg_Resources["resourcesCNNameDataGridViewTextBoxColumn", e.RowIndex].Value.ToString() + "]相关的记录?", "编辑前删除相关记录", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
DeletePrivilegeByResourceId(new Guid(dg_Resources["resourcesIdDataGridViewTextBoxColumn", e.RowIndex].Value.ToString()));
}
else
{
e.Cancel = true;
}
}
}
/// <summary>
/// 给列表添加自动生成GUID的功能
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void dg_Resources_RowEnter(object sender, DataGridViewCellEventArgs e)
{
if (dg_Resources.Rows[e.RowIndex].IsNewRow)
{
dg_Resources.Rows[e.RowIndex].Cells["resourcesIdDataGridViewTextBoxColumn"].Value = Guid.NewGuid().ToString();
dg_Resources.Rows[e.RowIndex].Cells["ResourceGroupId"].Value = trv_Resources.SelectedNode.Name;
dg_Resources.Rows[e.RowIndex].Cells["ResourcesOrder"].Value = this.dataResources.wmf_Resources.Rows.Count + 1;
}
if (dg_Resources.Rows[e.RowIndex].Cells["resourcesIdDataGridViewTextBoxColumn"].Value != null)
{
// 过滤
this.wmfPrivilegeBindingSource.Filter = "[ResourcesId]='" + dg_Resources.Rows[e.RowIndex].Cells["resourcesIdDataGridViewTextBoxColumn"].Value.ToString() + "'";
lbl_TableName.Text = "与资源[" + dg_Resources.Rows[e.RowIndex].Cells["resourcesCNNameDataGridViewTextBoxColumn"].Value.ToString() + "]相关的权限记录,共 " + wmfPrivilegeBindingSource.Count.ToString() + " 条记录";
}
}
/// <summary>
/// 根据资源删除相关的权限
/// </summary>
/// <param name="operationId"></param>
private void DeletePrivilegeByResourceId(Guid resourceID)
{
//检验这个权限是否被使用,如果有被使用,则删除
foreach (DataResources.wmf_PrivilegeRow row in wmf_PrivilegeTableAdapter.GetDataByResourceId(resourceID))
{
//删除PrivilegeInRoles
new PrivilegeInRolesBLL().DeletePrivilegeInRoles(row.ResourcesId);
}
int i = wmf_PrivilegeTableAdapter.DeleteByResourceId(resourceID);
//重新加载数据
this.dataResources.wmf_Privilege.Clear();
wmf_PrivilegeTableAdapter.Fill(dataResources.wmf_Privilege);
SysLog("成功删除了" + i.ToString() + "条与resourceID[" + resourceID + "]相关的记录", true);
}
#endregion
#region Operate操作类型的DataGridView事件
private void dg_Operate_RowEnter(object sender, DataGridViewCellEventArgs e)
{
if (dg_Operate["operationIdDataGridViewTextBoxColumn", e.RowIndex].Value != null)
{
// 过滤
this.wmfPrivilegeBindingSource.Filter = "[OperationID]=" + dg_Operate["operationIdDataGridViewTextBoxColumn", e.RowIndex].Value.ToString();
lbl_TableName.Text = "与[" + dg_Operate["OperationCNName", e.RowIndex].Value.ToString() + "]操作(Operation)相关的权限记录共 " + wmfPrivilegeBindingSource.Count.ToString() + " 条记录";
}
}
private void dg_Operate_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)
{
if ((!dg_Operate.Rows[e.RowIndex].IsNewRow) && (this.wmfPrivilegeBindingSource.Count != 0) && dg_Operate.Columns[e.ColumnIndex].Name != "descriptionDataGridViewTextBoxColumn2")
{
if (MessageBox.Show("在编辑关键信息以前,请确认是否删除与[" + dg_Operate["OperationCNName", e.RowIndex].Value.ToString() + "]相关的记录?", "编辑前删除相关记录", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
DeletePrivilegeByOperationId((int)dg_Operate["operationIdDataGridViewTextBoxColumn", e.RowIndex].Value);
}
else
{
e.Cancel = true;
}
}
}
/// <summary>
/// 根据操作类型删除相关的权限
/// </summary>
/// <param name="operationId"></param>
private void DeletePrivilegeByOperationId(int operationId)
{
//检验这个权限是否被使用,如果有被使用,则删除
foreach (DataResources.wmf_PrivilegeRow row in wmf_PrivilegeTableAdapter.GetDataByOperationID(operationId))
{
//删除PrivilegeInRoles
new PrivilegeInRolesBLL().DeletePrivilegeInRoles(row.PrivilegeId);
}
int i = wmf_PrivilegeTableAdapter.DeleteByOperationId(operationId);
//重新加载数据
this.dataResources.wmf_Privilege.Clear();
wmf_PrivilegeTableAdapter.Fill(dataResources.wmf_Privilege);
SysLog("成功删除了" + i.ToString() + "条与OperationID[" + operationId + "]相关的记录", true);
}
/// <summary>
/// 删除行,要删除相关记录
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void dg_Operate_UserDeletingRow(object sender, DataGridViewRowCancelEventArgs e)
{
if ((!e.Row.IsNewRow) && (this.wmfPrivilegeBindingSource.Count != 0))
{
if (MessageBox.Show("在删除操作之前,请确认是否删除与此相关的信息", "删除相关记录", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
DeletePrivilegeByOperationId((int)e.Row.Cells["operationIdDataGridViewTextBoxColumn"].Value);
}
else
{
e.Cancel = true;
}
}
}
#endregion
#region 清理冗余数据
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void toolStripClean_Click(object sender, EventArgs e)
{
try
{
SysLog("开始清理在Privilege表中重复的数据", true);
int i = this.wmf_PrivilegeTableAdapter.DeleteRepeatData();
SysLog("清理在Privilege表中重复的数据成功!", true);
MessageBox.Show("清理冗余数据成功!", "清理冗余数据", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (Exception ex)
{
SysLog("清理冗余数据数据失败,原因是:" + ex.Message, true);
MessageBox.Show("清理冗余数据失败,原因是:" + ex.Message, "清理冗余数据", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
#endregion
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -