Here I have explained how to use the context menu strip to perform some operations in Windows form. If you don't know about context menu strips then I will strongly suggest you check my tutorial about ContextMenuStrip. I have clearly explained how to use ContextMenuStrip in Windows form.
Context MenuStrip in Windows form
Now here, I have explained how to delete a record from DataGridView using ContextMenuStrip.
Before that create a Windows project and add a DataGrid to show data and a ContextMenuStrip on it as in the following screenshot:
![DataGrid]()
Now Add a Menu as "Delete" in the menu.
![Delete]()
Now write the following code to fill the data view.
public partial class Form1 : Form
{
SqlConnection con = new SqlConnection("Data Source=DEBENDRA;Initial Catalog=Students;User ID=sa;Password=123");
int Index = 0; // Declaring a variable
SqlDataAdapter da;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
filldata(); // Calling the method to fill the datagrid
}
public void filldata()
{
da = new SqlDataAdapter("select * from tbl_studentdetails", con);
DataTable dt = new DataTable();
da.Fill(dt);
dataGridView1.DataSource = dt;
}
}
Now the data will fill as in the following screenshot.
![Student Details]()
Now to show the context menu on right-click, write the following code.
private void dataGridView1_CellMouseUp(object sender, DataGridViewCellMouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
this.dataGridView1.Rows[e.RowIndex].Selected = true;
this.Index = e.RowIndex;
this.dataGridView1.CurrentCell = this.dataGridView1.Rows[e.RowIndex].Cells[1];
this.contextMenuStrip1.Show(this.dataGridView1, e.Location);
contextMenuStrip1.Show(Cursor.Position);
}
}
Now set the Selection Mode property of datagrid to FullRowSelect as in the following screenshot.
![Mode property]()
As FullRow is selected when a cell is selected then a full row of data grid will automatically be selected.
Now for deleting the record double click on the "Delete" menu and write the following code in it.
private void deleteToolStripMenuItem_Click(object sender, EventArgs e)
{
DialogResult dr = MessageBox.Show("Are you sure want to Delete", "confirmation", MessageBoxButtons.YesNo);
if (dr == DialogResult.Yes)
{
string studentId = dataGridView1.Rows[Index].Cells[1].Value.ToString(); // Getting the ID by index of row.
SqlCommand cmd = new SqlCommand("delete from tbl_studentdetails where RollNo='" + studentId + "'", con);
con.Open();
int result = cmd.ExecuteNonQuery();
if (result == 1)
{
MessageBox.Show("Record Deleted Successfully");
filldata();
}
else
{
MessageBox.Show("Record not Deleted....Please try again.");
}
}
}
So when we delete the record it will show like this.
![Record]()
When we right-click on any row first the whole row is selected and the "Delete " menu will come up.
When you click on Delete then it will ask for confirmation.
![Confirmation]()
When you click yes then.
![Yes]()
Now if you look at the table, the record was deleted successfully.
![Record]()
So in this way, we can implement a simple delete option by ContextMenuStrip.Thus you can perform any operation using ContextMenuStrip.
Thank you!