- C# datagridview right click select row and show menu to call a form for edit the row selected
- public void Rightclick()
- {
- ContextMenu Rmnu = new ContextMenu();
- MenuItem mnuCCS = new MenuItem("Change Class Size");
- MenuItem mnuDeactv = new MenuItem("Deactivate");
- mnuCCS.Click += new EventHandler(radGridView_Class_View_Click);
- mnuDeactv.Click += new EventHandler(radGridView_Class_View_Click);
- Rmnu.MenuItems.AddRange(new MenuItem[] { mnuCCS, mnuDeactv });
- radGridView_Class_View.ContextMenu = Rmnu;
- }
- private void radGridView_Class_View_Click(object sender, EventArgs e)
- {
- Rightclick();
- }
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Windows.Forms;
- namespace test1
- {
- public partial class Form1 : Form
- {
- public Form1()
- {
- InitializeComponent();
- // Test-Data
- dataGridView1.DataSource = GetTestData();
- // Add menu
- AddContextMenu(dataGridView1);
- // remember mouse location
- AddMouseEnterEvent();
- }
- private DataTable GetTestData()
- {
- DataTable tab = new DataTable();
- DataColumn c1 = new DataColumn("col1");
- DataColumn c2 = new DataColumn("col2");
- tab.Columns.AddRange(new DataColumn[] { c1, c2 });
- DataRow r1 = tab.NewRow(); r1[c1] = "cell 1"; r1[c2] = "cell 2";
- DataRow r2 = tab.NewRow(); r2[c1] = "cell 3"; r2[c2] = "cell 4";
- tab.Rows.Add(r1);
- tab.Rows.Add(r2);
- return tab;
- }
- private void AddContextMenu(DataGridView dgv)
- {
- var strip = new ContextMenuStrip();
- var menu1 = strip.Items.Add("Change Class Size");
- var menu2 = strip.Items.Add("Deactivate");
- menu1.Click += new EventHandler(menu1_Click);
- menu2.Click += new EventHandler(menu2_Click);
- foreach (DataGridViewColumn column in dgv.Columns)
- {
- column.ContextMenuStrip = strip;
- }
- }
- DataGridViewCellEventArgs mouseLocation;
- void AddMouseEnterEvent()
- {
- dataGridView1.CellMouseEnter += (s,e) => { mouseLocation = e; };
- }
- void menu2_Click(object sender, EventArgs e)
- {
- var cell = dataGridView1.Rows[mouseLocation.RowIndex].Cells[mouseLocation.ColumnIndex];
- // do something stupid
- cell.Style.BackColor = Color.Red;
- }
- void menu1_Click(object sender, EventArgs e)
- {
- var cell = dataGridView1.Rows[mouseLocation.RowIndex].Cells[mouseLocation.ColumnIndex];
- // do something even more stupid
- cell.Style.BackColor = Color.Blue;
- }
- }
- }