2013-11-21 34 views
3

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

+0

一个问题......这是真的的DataGridView? – varocarbas

+0

对不起,它是RadGridView,我的不好。 – borkowij

+0

没问题;我也误解了你的问题,所以我们甚至:) – varocarbas

回答

3

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

然后您必须将发件人投射到RadGridView,然后使用CurrentCell属性。

GridViewCellInfo dataCell = (sender as RadGridView).CurrentCell; 

如果你想哪个鼠标按钮被点击使用:

if (e.Button == MouseButtons.Right) 
{ 
//your code here 
} 
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事件),则不应该使用这种方法。无论如何,我会让这个答案作为参考(对于那些寻求相当于两个事件协调的情况,那里没有直接的解决方案)。

+0

谢谢,但我不想使用全局变量。 – borkowij

+0

@bonio如上所述,在RadGridView中没有太多经验;但至少在DataGridView中,这在很多情况下是“必需的”(=最适合的过程)。 – varocarbas