RadGridView检测单元格点击事件按钮

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

一个问题...这真的是DataGridView吗? - varocarbas
抱歉,应该是RadGridView,我的错。 - borkowij
没问题;我也误读了你的问题,所以我们扯平了 :) - varocarbas
2个回答

4

您可以通过使用鼠标点击事件来检测点击的单元格。

然后,您需要将发送器强制转换为RadGridView,然后使用CurrentCell属性。

GridViewCellInfo dataCell = (sender as RadGridView).CurrentCell;

如果您想知道点击了哪个鼠标按钮,请使用以下代码:

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

这将返回所选单元格,可能不是右键单击的那个单元格。 - Damien
怎么可能没有鼠标点击事件?这是什么鬼? - undefined

1
我写这篇答案是基于你指的是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事件),就不应该使用这种方法。无论如何,我将保留此答案作为参考(供寻找等效的两个事件协调情况的人参考,在没有直接解决方案的情况下)。


谢谢,但我宁愿不使用全局变量。 - borkowij
@bonio 正如所说,我在 RadGridView 上没有太多的经验;但是,在 DataGridView 中,这在相当多的情况下都是“必需的”(即最合适的做法)。 - varocarbas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接