RadGridView 检测 CellClick 事件按钮

Posted

技术标签:

【中文标题】RadGridView 检测 CellClick 事件按钮【英文标题】:RadGridView detect CellClick event button 【发布时间】:2013-12-05 15:14:52 【问题描述】:

如何检测在事件 CellClick 中按下了哪个鼠标按钮,或者如何检测在事件 MouseClick 中按下了哪个单元格。

【问题讨论】:

一个问题...这真的是DataGridView吗? 抱歉,是 RadGridView,我的错。 没问题;我也误读了你的问题,所以我们甚至:) 【参考方案1】:

您可以使用鼠标点击事件检测哪个单元格被点击。

然后你必须将 sender 转换为 RadGridView,然后使用 CurrentCell 属性。

GridViewCellInfo dataCell = (sender as RadGridView).CurrentCell;

如果您想点击哪个鼠标按钮,请使用:

if (e.Button == MouseButtons.Right)

//your code here

【讨论】:

【参考方案2】:

我写了这个答案,认为你的意思是DataGridView;但这段代码也可能对RadGridView 有用。在这些情况下(使用DataGridView)我通常做的是依靠全局标志来协调两个不同的事件;只需几个全局标志就可以了。示例代码:

bool aCellWasSelected = false;
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)

    aCellWasSelected = true;


private void dataGridView1_MouseClick(object sender, MouseEventArgs e)

    DataGridViewCell selectedCell = null;
    if (aCellWasSelected) 
    
       selectedCell = dataGridView1.SelectedCells[0];
       MouseButtons curButton = e.Button;
       //Do stuff with the given cell + button
    

    aCellWasSelected = false;

注意:提议的基于全局变量的方法并不是理想的方法,但在很多与 DataGridView 相关的情况下,它是一种非常方便的实用解决方案。如果有一个直接的解决方案,如在这种情况下(如在其他答案中提出的,或者在 DataGridView 中,CellMouseClick 事件),您永远不应该使用这种方法。无论如何,我都会让这个答案作为参考(对于寻找等效的两个事件协调情况的人,没有直接的解决方案)。

【讨论】:

谢谢,但我不想使用全局变量。 @bonio 说的对RadGridView没有太多经验;但是,至少在 DataGridView 中,这在很多情况下是“必需的”(= 最充分的程序)。

以上是关于RadGridView 检测 CellClick 事件按钮的主要内容,如果未能解决你的问题,请参考以下文章

Telerik WinForm RadGridView清除过滤

RadGridView添加序号列

Telerik radGridView添加childrow

即使禁用RadGridView GridViewSelectColumn仍然可以选择

如何在 Silverlight 中使用 Telerik RadGridView 将列设置为默认排序列

C#winForm怎么禁用dataGridView的cellclick事件(急急急!)