※ ChatGPTを利用し、要約された質問です(原文:[C#] ContextMenuStrip を呼び出したセルの特定)
[C#] ContextMenuStrip を呼び出したセルの特定
このQ&Aのポイント
DataGridViewのどのセルを右クリックしてポップアップメニュー(ContextMenuStrip)が表示されたか知りたいです。
popup.SourceControlを用いると、DataGridViewコントロールしか返ってこないため、DataGridViewのCellMouseEventハンドラを実装する必要がある。
DataGridViewのセルで右クリックされた場合に、それがどのセルか特定する解決方法は他にはないのか
[C#] ContextMenuStrip を呼び出したセルの特定
DataGridViewのどのセルを右クリックしてポップアップメニュー(ContextMenuStrip) が表示されたか知りたいのですが
using System;
using System.Windows.Forms;
public class MyForm : Form
{
DataGridView dgv;
DataGridViewTextBoxColumn dgvColumn1;
FileDialog fileDlg;
ContextMenuStrip popup;
ToolStripMenuItem popupItem;
public MyForm()
{
dgv = new DataGridView();
dgvColumn1 = new DataGridViewTextBoxColumn();
fileDlg = new OpenFileDialog();
popup = new ContextMenuStrip();
popupItem = new ToolStripMenuItem();
dgvColumn1.HeaderText = "column1";
dgvColumn1.ContextMenuStrip = popup;
dgv.Dock = DockStyle.Fill;
dgv.RowTemplate.Height = 16;
dgv.Columns.Add(dgvColumn1);
popupItem.Text = "file";
popupItem.MouseUp += delegate(object sender, MouseEventArgs e)
{
if (fileDlg.ShowDialog() == DialogResult.OK)
{
//右クリックしたセル.Text = filedlg.FileName;
}
};
// popup menu
popup.Items.Add(popupItem);
Controls.Add(dgv);
}
}
上のソースにて、
http://dobon.net/vb/dotnet/control/cmsourcecontrol.html
にあるように、popup.SourceControlを用いても、DataGridView コントロールしか返って来ません。
となると、DataGridViewのCellMouseEventハンドラを実装する必要が出てくると思うのですがこれ以外解決方法ってないですかね・・?