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
        {
       }

    }

}

相关文章推荐

C#WinForm - 右键选中DataGridView或TreeView

【问题】 有时候,我们希望点击右键弹出菜单,选择“删除”或“修改”对对指定的结点或单元格(行)进行指定操作 但是我们获取当前选中的结点或选中索引时却不是我们希望的,而是我们右键之前的选中项 因此...
  • jiulang
  • jiulang
  • 2011年10月23日 13:49
  • 623

DataGridView右键删除行

插入右键控件(ConTextMenuStrip) private int index = 0; private void dataGridView1_CellMouseUp(objec...

在鼠标右键中添加 在此处打开命令行窗口

本文给出了鼠标右键打开命令行的方法,不仅仅在文件夹上,还可以在文件夹空白处添加...

右键隐藏显示DataGridView列

  • 2009年02月19日 14:22
  • 5KB
  • 下载

dataGridView右鍵操作C#

  • 2010年01月19日 11:30
  • 497B
  • 下载

取消鼠标右键默认事件contextmenu

想要web页面充分展示自身特色,修改浏览器默认的右键事件必不可少。右键单击网页,总是弹出另存为、审查元素、查看网页源代码等等之类的菜单。就我看来这是挺影响体验的。像右键这么重要的位置,必须充分利用。调...

Jquery鼠标右键点击弹出菜单

今天分享一个Jquery鼠标右键点击弹出菜单的组合功能。在项目中,主要是用在表格中,点击单元格, 弹出右键菜单,选择下一步的功能。 首先是,右键点击事件的获取: 鼠标的事件e,e.which: ...

破解网页不能复制+禁用鼠标右键的方法大全+一招破解图片防盗连值得收藏

在网上复制一些资料,有时会遇见网页无法复制的现象,这时我们该怎么办? 现在我在网上收集的多种可取方法给大家一起分享一下: ★一、通过使用IE浏览器“文件”下拉菜单中的“发送”之“电子邮件页面”的操...

网页中取消鼠标右键方法

onconTextmenu=window.event.returnValue=false;右键菜单禁用,用这个可以禁止复制。   在中加入属性代码: oncontextmenu="r...
  • acs1899
  • acs1899
  • 2012年06月28日 12:19
  • 308
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:DataGridView通过鼠标右键选中行
举报原因:
原因补充:

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