C#でDataGridViewの空の部分を右クリックすると(行が含まれていないグリッドの部分をクリックしても)、コンテキストメニューに行ベースのオプション。クリックが一列になったときにコンテキストメニューを表示させるにはどうすればよいですか?データグリッドの空白部分をクリックするとコンテキストメニューが表示されないようにする
これは私の知る限り得ているようです。
private void f_context_select_row(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
var hti = jobs_datagrid.HitTest(e.X, e.Y);
if (hti.RowIndex >= 0)
{
jobs_datagrid.ClearSelection();
jobs_datagrid.Rows[hti.RowIndex].Selected = true;
}
else
{
//what can I do here to collapse the context menu?
}
}
}
私はプログラム的に、このようにデータグリッドやコンテキストメニューを構築しています:ContextMenuStrip.Opening
イベントに関する
//on right click select row
jobs_datagrid.MouseDown += new MouseEventHandler(f_context_select_row);
//generate context menu
ContextMenuStrip m = new ContextMenuStrip();
ToolStripMenuItem context_datagrid_run = new ToolStripMenuItem("Run All Selected Campaigns");
ToolStripMenuItem context_datagrid_edit = new ToolStripMenuItem("Edit This Campaign");
ToolStripMenuItem context_datagrid_delete = new ToolStripMenuItem("Delete This Campaign");
context_datagrid_delete.Click += f_context_datagrid_delete;
context_datagrid_run.Click += f_run_selected_campaigns;
context_datagrid_edit.Click += f_context_datagrid_edit;
m.Items.Add(context_datagrid_delete);
m.Items.Add(context_datagrid_run);
m.Items.Add(context_datagrid_edit);
jobs_datagrid.ContextMenuStrip = m;
splitContainer3.Panel2.Controls.Add(jobs_datagrid);
あなたは[ContextMenu] Show()メソッドをどこで呼び出していますか? –
質問を更新して、コンテキストメニューをどのように構築しているかについてより多くの情報を表示しました。私はどこにでもショーイベントがあるとは思わない。私はVisual C#Expressで作業しています。 – atwellpub