C#中Winform开发DataGridView行点击菜单效果
CreateDgViewRightMenu();放在FORM的构造函数中支行
#region DataGridView的右键菜单处理
/// <summary>
/// 初始化函数
/// </summary>
public void CreateDgViewRightMenu()
{
ContextMenuStrip contextMenu = new ContextMenuStrip();
#region 单级菜单
//// 添加菜单项
ToolStripMenuItem deleteItem = new ToolStripMenuItem("删除行");
ToolStripMenuItem editItem = new ToolStripMenuItem("编辑行");
// 绑定事件
deleteItem.Click += new EventHandler(DeleteRow_Click);
editItem.Click += new EventHandler(EditRow_Click);
contextMenu.Items.Add(deleteItem);
contextMenu.Items.Add(editItem);
#endregion
#region 多级菜单
ToolStripMenuItem exportSubMenu = new ToolStripMenuItem("导出为:");
exportSubMenu.DropDownItems.Add("删除A", null, DeleteRow_Click);
exportSubMenu.DropDownItems.Add("修改B", null, EditRow_Click);
contextMenu.Items.Add(exportSubMenu);
#endregion
// 关联到 DataGridView
DataGridView1.ContextMenuStrip = contextMenu;
// 绑定鼠标事件
DataGridView1.MouseDown += DataGridView1_MouseDown;
}
/// <summary>
/// DataGridView右键事件处理
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void DataGridView1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
DataGridView.HitTestInfo hitTest = DataGridView1.HitTest(e.X, e.Y);
if (hitTest.Type == DataGridViewHitTestType.Cell)
{
DataGridView1.ClearSelection();
DataGridView1.Rows[hitTest.RowIndex].Selected = true;
}
else
{
DataGridView1.ContextMenuStrip = null;
}
}
}
/// <summary>
/// 删除事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void DeleteRow_Click(object sender, EventArgs e)
{
if (DataGridView1.SelectedRows.Count > 0)
{
DataGridViewRow Dr = DataGridView1.SelectedRows[0];
string id = Dr.Cells["id"].Value.ToString();
string name = Dr.Cells["name"].Value.ToString();
try
{
#region 此处做删除后再重新加载处理
GetData();
#endregion
}
catch (Exception ex)
{
MessageBox.Show(name + "删除异常!");
}
}
}
/// <summary>
/// 修改事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void EditRow_Click(object sender, EventArgs e)
{
if (DataGridView1.SelectedRows.Count > 0)
{
DataGridViewRow row = DataGridView1.SelectedRows[0];
string id = row.Cells["Id"].Value?.ToString();
string name = row.Cells["Name"].Value?.ToString();
#region 修改的处理事务
#endregion
}
}
#endregion
查看更多关于C#中Winform开发DataGridView行点击菜单效果的详细内容...