Элемент ContextMenuStrip, созданный в DataGridViewCellMouseEventHandler, содержит данные из предыдущего нажатия.
Пытаюсь решить это и немного застрял.
в Form1.Designer.cs добавляю событие:
this.dataGridView1.CellMouseUp += new System.Windows.Forms.DataGridViewCellMouseEventHandler(this.DataGridView1_CellMouseUp);
Затем я использую следующее в Form1.cs:
private void DataGridView1_CellMouseUp(Object sender, DataGridViewCellMouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
ContextMenuStrip cm = new ContextMenuStrip();
cm.Items.Add("Data:" + e.RowIndex + e.ColumnIndex);
ContextMenuStrip = cm;
}
}
При первом щелчке правой кнопкой мыши меню вообще не отображается, а затем при следующем щелчке правой кнопкой мыши отображаются данные из предварительно нажатой ячейки.
2 ответа
Попробуйте принудительно отобразить полосу меню:
if (e.Button == MouseButtons.Right) {
ContextMenuStrip cm = new ContextMenuStrip();
cm.Items.Add("Data:" + e.RowIndex + e.ColumnIndex);
cm.Show(MousePosition);
}
На самом деле это работает сейчас со следующим кодом (спасибо за предложения):
if (e.Button == MouseButtons.Right)
{
ContextMenuStrip cm = new ContextMenuStrip();
cm.Items.Add("Data:" + e.RowIndex + e.ColumnIndex);
cm.Show(MousePosition);
}