Контекстное меню datagrid
Добрый день.
У меня возникла проблема с контекстным меню в datagridview.
Конкретней: я создал меню для datagrid, которое вызывается при нажатии правой мыши, но данное событие происходит со второго раза и при этом решает в последующих нажатиях выбрать ячейку в datagrid, то есть меню вызывается, но действия по выбору ячейки в datagrid не происходит. А вот если уничтожать переменные контекстного меню после их работы, то выбор ячеек появляется, но само меню перестает вызываться.
Я слышал, что тут, может быть, замешаны контролы форм и их уровень приоритета. Как можно решить данную проблему?
Вызов меню
public void dataGridView2_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
if (System.Windows.Forms.MouseButtons.Right == e.Button & e.Clicks == 1 & comboBox2.SelectedItem.ToString() == "CIM_Process")
{
RequestWMI_Process Call_ContextMenuCIM_Porcess = new RequestWMI_Process(this);
Call_ContextMenuCIM_Porcess.Create_ContextMenuCIM();
}
else if (System.Windows.Forms.MouseButtons.Left != e.Button & e.Clicks > 1 & comboBox2.SelectedItem.ToString() == "CIM_Process")
{
RequestWMI_Process Call_ContextMenuCIM_Porcess = new RequestWMI_Process(this);
Call_ContextMenuCIM_Porcess.ContextMenuCIM_Porcess(sender, e);
dataGridView2.Rows[e.RowIndex].Selected = true;
dataGridView2.Focus();
}
}
Создание меню и вычисление индекса
public void Create_ContextMenuCIM()
{
ContextMenuStrip MenuGrid2 = new ContextMenuStrip();
ToolStripMenuItem MenuGrid2Copy = new ToolStripMenuItem("Копировать");
ToolStripMenuItem MenuGrid2Delet = new ToolStripMenuItem("Удалить");
ToolStripMenuItem MenuGrid2Paste = new ToolStripMenuItem("Вставить");
MenuGrid2.Items.AddRange(new ToolStripItem[] { MenuGrid2Copy, MenuGrid2Delet, MenuGrid2Paste });
Component.dataGridView2.ContextMenuStrip = MenuGrid2;
}
public void ContextMenuCIM_Porcess(object sender, DataGridViewCellMouseEventArgs e)
{
int IndexRowsGR2 = 0;
System.Windows.Forms.DataGridView.HitTestInfo hittestinfo = Component.dataGridView2.HitTest(e.X, e.Y);
if (hittestinfo != null & NumberOfRequestProcess > 0)
{
IndexRowsGR2 = hittestinfo.RowIndex;
/* && hittestinfo.Type == DataGridViewHitTestType.RowHeader
* var ActiveCell = Component.dataGridView2[hittestinfo.ColumnIndex, hittestinfo.RowIndex];
ActiveCell.Selected = true;
contextMenu.Show(Component.dataGridView2, new Point(e.X, e.Y));
*/
}
}