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

ano*_*932 6 .net c# events winforms

所以很容易检查单元格是否被点击:

        DataGridView.CellClicked += cellClickedHandler;
Run Code Online (Sandbox Code Playgroud)

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

        DataGridView.KeyDown += keyPressedHandler;
Run Code Online (Sandbox Code Playgroud)

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

ano*_*932 6

   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!");
        }
    }
Run Code Online (Sandbox Code Playgroud)