检测CTRL +单击同一事件处理程序中的DataGridView单元格

时间:2012-10-05 23:58:13

标签: c# .net winforms events

因此,检查单元格是否被单击时很容易:

        DataGridView.CellClicked += cellClickedHandler;

并且很容易检查是否按下了键:

        DataGridView.KeyDown += keyPressedHandler;

我想知道如何将这两个功能合二为一?我想在用户控件单击一个单元格时执行特定操作,据我所知,这些事件的动作处理程序是两个独特的独立函数,传递给cellClickedHandler的参数不允许我获取状态键盘和任何可能与鼠标点击一起触发的按键。

1 个答案:

答案 0 :(得分:5)

   private void cellClicked(object sender, DataGridViewCellMouseEventArgs e)
    {
        if(e.Button == MouseButtons.Right) // right click
        {
            if (Control.ModifierKeys == Keys.Control)
               System.Diagnostics.Debug.Print("CTRL + Right click!");
            else
               System.Diagnostics.Debug.Print("Right click!");
        }
        if (e.Button == MouseButtons.Left) // left click
        {
            if (Control.ModifierKeys == Keys.Control)
                System.Diagnostics.Debug.Print("CTRL + Left click!");
            else
                System.Diagnostics.Debug.Print("Left click!");
        }
    }