private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if( e.ColumnIndex==-1)
            {
                MessageBox.Show("这里是行头");
            }
        }
 
    private void dataGridView1_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            if(e.Button==MouseButtons.Right)
            {
                //加入显示右键弹出菜单
            }
        }
 
可以肯定,楼上的代码都未经测试。注意:楼主要的是在行头,就是标题行上点击右键,出现快捷菜单。
而且,CellClick 是不响应右键的,所以,只有在 CellMouseClick 事件中才能响应右键.(RowHeaderMouseClick 也有响应,但是不知道为什么,我的 VS2005 没有反应,所以不推荐使用)
private void dgv_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            // 判断是否右键点击
            if (e.Button == MouseButtons.Right)
            {
                // 得到点击所在的行和列信息。相关函数查 MSDN
                DataGridView.HitTestInfo hitinfo = dgv_verify.HitTest(e.X, e.Y);
                // 如果 RowIndex < 0,就是标题行了。 
                if (hitinfo.RowIndex < 0)
                {
                    // 如果你只要指定的列显示菜单,则加入对 hitinfo.ColumnIndex 的判断
                    contextMenuStrip1.Show(MousePosition.X, MousePosition.Y);
                }
            }
        }

===============================================================
以上代码经过测试,在 VS2005 和 VS2008 下运行正常。
有什么问题,再问我吧。

来自:http://bbs.csdn.net/topics/370259768
05-17 15:36