DataGridView如何做到左键或者右键只要是单击(双击)DataGridView以外区域就取消行的选中(设置为未选中状态)

sw19810913 2010-11-27 09:51:10
DataGridView如何做到左键或者右键只要是单击(双击)DataGridView以外区域就取消行的选中(设置为未选中状态)

...全文
217 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuyq11 2010-11-28
  • 打赏
  • 举报
回复
public int GetRowIndexAt(int mouseLocation_Y)
{
if (dataGridView1.FirstDisplayedScrollingRowIndex < 0)
{
return -1;
}
if (dataGridView1.ColumnHeadersVisible == true && mouseLocation_Y <= dataGridView1.ColumnHeadersHeight)
{
return -1;
}
int index = dataGridView1.FirstDisplayedScrollingRowIndex;
int displayedCount = dataGridView1.DisplayedRowCount(true);
for (int k = 1; k <= displayedCount; )
{
if (dataGridView1.Rows[index].Visible == true)
{
Rectangle rect = dataGridView1.GetRowDisplayRectangle(index, true);
if (rect.Top <= mouseLocation_Y && mouseLocation_Y < rect.Bottom)
{
return index;
}
k++;
}
index++;
}
return -1;
}

private void dataGridView1_MouseClick(object sender, MouseEventArgs e)
{
if (GetRowIndexAt(e.Y) == -1)
{
dataGridView1.CurrentCell = null;
}
}
pcqpzq 2010-11-28
  • 打赏
  • 举报
回复
上面的功能是需要将焦点转移到别的控件才能实现,如果你需要单击窗体空白处也要实现,则加上:
this.Click += new System.EventHandler(this.dataGridView1_Leave);
甚至:
this.DeActive+= new System.EventHandler(this.dataGridView1_Leave);
this.Leave+= new System.EventHandler(this.dataGridView1_Leave);

需要自己举一反三,不要什么都要别人教,毕竟工资领了是你自己花
pcqpzq 2010-11-28
  • 打赏
  • 举报
回复
上面的功能是需要将焦点转移到别的控件才能实现,如果你需要单击窗体空白处也要实现,则加上:
this.Click += new System.EventHandler(this.dataGridView1_Leave);
甚至:
this.DeActive+= new System.EventHandler(this.dataGridView1_Leave);
this.Leave+= new System.EventHandler(this.dataGridView1_Leave);

需要自己举一反三,不要什么都要别人教,毕竟工资领了是你自己花
dragon_yx 2010-11-28
  • 打赏
  • 举报
回复
顶个……
sw19810913 2010-11-27
  • 打赏
  • 举报
回复
private void dataGridView1_Leave(object sender, EventArgs e)
{
foreach (DataGridViewRow row in this.dataGridView1.SelectedRows)
{
row.Selected = false;
}

}
代码好像没效果

我要的是只要单击 DataGridView 控件 以外的任意地方就取消 DataGridView 原来选中的状态,设置为未选中状态
pcqpzq 2010-11-27
  • 打赏
  • 举报
回复
Leave
sw19810913 2010-11-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 pcqpzq 的回复:]
foreach (DataGridViewRow row in this.dataGridView1.SelectedRows)
{
row.Selected = false;
}
[/Quote]

在哪个事件中写啊?
pcqpzq 2010-11-27
  • 打赏
  • 举报
回复
foreach (DataGridViewRow row in this.dataGridView1.SelectedRows)
{
row.Selected = false;
}

110,545

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧