如何检测事件CellClick中按下了哪个鼠标按钮,或者如何在事件MouseClick中检测到哪个按下了哪个单元格。
答案 0 :(得分:3)
您可以使用鼠标单击事件检测单击了哪个单元格。
然后你必须将发送者强制转换为RadGridView,然后使用CurrentCell属性。
GridViewCellInfo dataCell = (sender as RadGridView).CurrentCell;
如果您想要点击哪个鼠标按钮,请使用:
if (e.Button == MouseButtons.Right)
{
//your code here
}
答案 1 :(得分: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
事件),则不应使用这种方法。无论如何,我都会将这个答案作为参考(对于寻找等效的双事件协调情况的人来说,没有直接的解决方案)。