DataGridView通过鼠标右键选中行

转载 2012年03月27日 23:25:07

新方法DataGridView通过鼠标右键选中行

private void dataGridView1_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)
{
    if (e.Button == MouseButtons.Right)
        {
            if (e.RowIndex >= 0)
            {
                dataGridView1.ClearSelection();
                dataGridView1.Rows[e.RowIndex].Selected = true;
                dataGridView1.CurrentCell = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex];
                contextMenuStrip1.Show(MousePosition.X, MousePosition.Y);
            }
        }
    }
}
在DataGridView中的CurrentRow属性为只读,且其Index也不能动态设置,故只能在DataGridView中用左键来选择行,从而实现当前行的定位。
现在要实现在DataGridView中单击右键实现左键的功能,代码如下:
private void dataGridView1_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)
{
    if (e.Button == MouseButtons.Right && e.RowIndex > -1 && e.ColumnIndex > -1)
    {
        dataGridView1.CurrentRow.Selected = false;
        dataGridView1.Rows[e.RowIndex].Selected = true;
    }
}
DatagridView的CellMouseDown事件添加如上代码,在不考虑注释代码的情况下,可以实现对当前选中行的不显示选中,而对鼠标右击的行实现选中
这样存在一个问题,CurrentRow的属性仍然为之前的哪个值,即使将鼠标右键选中的行的Selected设置为True也不能改变。
而在将注释代码注销后即可同时改变CurrentRow的属性,这样以后编码方便多了!
当然在对CurrentCell赋值的时候别忘了判断鼠标右击到DataGridView边框行列的情况
以上本文来自CSDN博客:http://blog.csdn.net/Adi_liu/archive/2009/01/07/3725230.aspx

<===========================================>

由于本人要实现的是在dataGridView中通过右键所在位置是否为数据行,没有则禁用部份菜单项。
以上代码无法判断右键是否在空置,代码修改如下:

private void dataGridView1_MouseDown(object sender, MouseEventArgs e)
{
   DataGridView.HitTestInfo rows = this.dataGridView1.HitTest(e.X, e.Y);
   if (e.Button == MouseButtons.Right)
 {
   if (rows.RowIndex > -1)
     {
           this.dataGridView1.ClearSelection();
          this.dataGridView1.CurrentRow.Selected = false;
          this.dataGridView1.Rows[rows.RowIndex].Selected = true;
       }
        else
        {
       }

    }

}

DataGridView右键点击行时选中行,并且弹右键快捷菜单

'DataGridView右键点击行时选中行,并且弹右键快捷菜单     Private Sub GridView1_CellMouseDown(ByVal sender As Object, By...
  • u010141129
  • u010141129
  • 2014年09月03日 09:07
  • 876

winform 右键点击行时选中行,并弹出操作菜单

①. 添加一个快捷菜单contextMenuStrip1; ②. 给dataGridView1的CellMouseDown事件添加处理程序: private void DataGridView1_...
  • jsjpanxiaoyu
  • jsjpanxiaoyu
  • 2015年07月30日 20:49
  • 3840

DataGridView左键选中行改变行背景色,右键选中行不改变背景色。左键选中行的背景色不变

private void dataGridView1_CellMouseUp(object sender, DataGridViewCellMouseEventArgs e) { ...
  • qq_23833037
  • qq_23833037
  • 2016年11月09日 23:38
  • 523

DataGridView右键单击弹出菜单并选中行

要求: datagridview右键单击,弹出菜单。如果右键单击处的行是被选中的,则对这些选中的行进行操作;如果右键单击处的行不是被选中的,则清除所有选中的行,并选中当前行,然后进行操作。 代码:...
  • suinon
  • suinon
  • 2012年01月03日 22:36
  • 2930

Vb.net-DatagridView之右击删除选中行

右击显示“下机”,和点击“下机”删除是分开的两个操作。要先根据我们鼠标右击的位置,确定所在的行,显示“下机”,然后才能点击“下机”,执行下机操作。...
  • WKX18330698534
  • WKX18330698534
  • 2016年05月23日 11:15
  • 2304

DataGridView控件之多行数据的选中与删除功能

DataGridView控件之多行数据的选中与删除步骤: (1)创建Windows窗体程序,并在窗体上防止一个dataGridView控件名字为dataGridView1,两个按钮控件(ADD和Del...
  • zhanghui962623727
  • zhanghui962623727
  • 2016年06月07日 10:05
  • 5133

C# DataGridView如何获取选中行的某个数据

DataGridView的几个基本操作: 1、获得某个(指定的)单元格的值: dataGridView1.Row[i].Cells[j].Value; 2、获得选中的总行数: dataGrid...
  • hejisan
  • hejisan
  • 2016年09月28日 11:24
  • 26919

DataGridView右键选中行

private void dgvCatelogList_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)        { ...
  • zhangjiankun880
  • zhangjiankun880
  • 2010年11月23日 20:50
  • 268

C# WinForm 设置DataGridView选中指定行

int rowIndex=3;//指定行号            this.dgvInGoodsInfo.Rows[rowIndex].Selected = true;this.dgvInGoodsI...
  • lutinghuan
  • lutinghuan
  • 2010年12月23日 10:23
  • 15954

DataGridView添加一行数据、全选、取消全选、清空数据、删除选中行

.net 2005下的Windows Form Application,一个DataGridView控件和4个Button,界面设置如下:  代码如下,有注解,相信大家都看得明白: using Sys...
  • JoeBlackzqq
  • JoeBlackzqq
  • 2009年10月01日 16:16
  • 19621
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:DataGridView通过鼠标右键选中行
举报原因:
原因补充:

(最多只允许输入30个字)