当我右键单击datagridview时,我需要显示contextmenustrip。我的问题是,如果我右键单击datagridview列标题,应该显示一种类型的菜单。如果我右键单击网格单元格,则显示不同的菜单项。我使用标题列鼠标单击和单击鼠标单击。但是我遇到了一些问题。标题栏鼠标单击不起作用。请给出解决方案。
答案 0 :(得分:2)
只需使用MouseUp事件即可检测鼠标点击。 DataGridView.HitTest()方法可以告诉您单击DGV的哪个部分,允许您选择所需的CMS。例如:
private void dataGridView1_MouseUp(object sender, MouseEventArgs e) {
if (e.Button != MouseButtons.Right) return;
var dgv = (DataGridView)sender;
ContextMenuStrip cms = null;
var hit = dgv.HitTest(e.X, e.Y);
switch (hit.Type) {
case DataGridViewHitTestType.ColumnHeader: cms = contextMenuStrip1; break;
case DataGridViewHitTestType.Cell: cms = contextMenuStrip2; break;
}
if (cms != null) cms.Show(dgv, e.Location);
}