C# RadGridView检测单元单击事件按钮

C# RadGridView检测单元单击事件按钮,c#,telerik,telerik-grid,C#,Telerik,Telerik Grid,如何检测在事件单元格单击中按下了哪个鼠标按钮,或者如何检测在事件单元格单击中按下了哪个单元格。我写这个答案时认为您的意思是DataGridView;但是这段代码对于RadGridView也很有用。在这些情况下(使用DataGridView),我通常会依赖一个全局标志来协调两个不同的事件;只要几个全局标志就可以了。示例代码: bool aCellWasSelected = false; private void dataGridView1_CellClick(object sender, Data

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

我写这个答案时认为您的意思是
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
事件中所建议的),您就不应该使用这种方法。无论如何,我都会把这个答案作为参考(对于那些寻找等效的两个事件协调情况的人,在没有直接解决方案的情况下)。

你可以通过鼠标点击事件来检测哪个单元格被点击

然后必须将发送方强制转换为RadGridView,然后使用CurrentCell属性

GridViewCellInfo dataCell = (sender as RadGridView).CurrentCell;
如果要查看单击的鼠标按钮,请使用:

if (e.Button == MouseButtons.Right)
{
//your code here
}

一个问题。。。这真的是DataGridView吗?对不起,是RadGridView,我的错。没问题;我也误读了你的问题,所以我们甚至:)谢谢,但我不想使用全局变量。@bonio如前所述,在RadGridView中没有太多经验;但是,至少在DataGridView中,这在相当多的场景中是“必需的”(=最适当的过程)。