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

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

【问题讨论】:

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

标签: c# telerik telerik-grid


【解决方案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 中,这在很多情况下是“必需的”(= 最充分的程序)。
    猜你喜欢
    • 1970-01-01
    • 2014-06-28
    • 1970-01-01
    • 2019-01-25
    • 2013-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多