Add context menu in a datagrid view in a winform application

坚强是说给别人听的谎言 提交于 2020-01-09 11:10:22

问题


How to show a Context Menu when you right click a Menu Item in a DataGridView ? I would like to add delete in the menu so that the entire row can be deleted . Thanks in Advance


回答1:


With reference to Miguel answer
I think this will be easy to implement like this

    int currentRowIndex;
    private void dataGridView1_CellMouseUp(object sender, DataGridViewCellMouseEventArgs e)
    {
        currentRowIndex = e.RowIndex;
    }  
    private void deleteToolStripMenuItem_Click(object sender, EventArgs e)
    {    
        dataGridView1.Rows.Remove(dataGridView1.Rows[currentRowIndex]);
    }



回答2:


You'll need to create a context menu with a "delete row" option in the designer. Then assign the DGV (Data Grid View)'s ContextMenuStrip property to this context menu.

Then double click on the delete row item, and add this code:

DGV.Rows.Remove(DGV.CurrentRow);

You'll also need to add a MouseUp event for the DGV that allows the current cell to change when you right click it:

private void DGV_MouseUp(object sender, MouseEventArgs e)
{
    // This gets information about the cell you clicked.
    System.Windows.Forms.DataGridView.HitTestInfo ClickedInfo = DGV.HitTest(e.X, e.Y);

    // This is so that the header row cannot be deleted
    if (ClickedInfo.ColumnIndex >= 0 && ClickedInfo.RowIndex >= 0)

    // This sets the current row
    DataViewMain.CurrentCell = DGV.Rows[ClickedInfo.RowIndex].Cells[ClickedInfo.ColumnIndex];
}



回答3:


I know this question is quite old, but maybe someone will still have use for this. There is an Event for this, CellContextMenuStripNeeded. The following code works perfectly for me and seems less hacky than the MouseUp Solution:

private void DGV_CellContextMenuStripNeeded(object sender, DataGridViewCellContextMenuStripNeededEventArgs e)
{
    if (e.RowIndex >= 0)
    {
        DGV.ClearSelection();
        DGV.Rows[e.RowIndex].Selected = true;
        e.ContextMenuStrip = MENUSTRIP;
    }
}


来源:https://stackoverflow.com/questions/4201816/add-context-menu-in-a-datagrid-view-in-a-winform-application

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!