好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

C#中Winform开发DataGridView行点击菜单效果

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行点击菜单效果的详细内容...

  阅读:20次