ListView上的Ctrl + C识别为“LButton | Sift Key”

时间:2016-02-19 14:18:50

标签: c# winforms listview hotkeys

如何在listview上按下“ctrl + c”键?

我正在尝试那样

private void listviewLogger_KeyUp(object sender, KeyEventArgs e)
{
    if (sender != listviewLogger) return;

    //if (e.Control && e.KeyData == (Keys.Control | Keys.C))
    if (e.Control && e.KeyCode == Keys.C)
        CopySelectedValuesToClipboard();
}

但它向我展示了 LButton |的组合按ctrl + C时筛选键enter image description here

p.s。:在Windows中安装了两种语言,系统Win2012 R2

Update1:​​感谢您的评论!如果我记录操作,我会看到:

  

e.KeyData:ControlKey

     

e.KeyCode:ControlKey

     

e.KeyData:C

     

e.KeyCode:C

但仍然无法捕捉到这个关键序列。代码:

        private void listviewLogger_KeyUp(object sender, KeyEventArgs e)
        {
            if (sender != listviewLogger)
            {
                return;
            }

            Logger("e.KeyData: " + e.KeyData);
            Logger("e.KeyCode: " + e.KeyCode);
        }

UPDATE2:

像这样解决了。不要问我怎么做:-D

    if (((e.KeyData & Keys.ControlKey) != Keys.ControlKey) && e.KeyCode == Keys.C)
    {
        CopyLogEntriesToClipboard();
    }

UPDATE3:

以前适用于 KeyUp 事件。对于 KeyDown ,第一个代码段工作

1 个答案:

答案 0 :(得分:2)

最好抓住按键事件(我已经在编辑器中通过按住Ctrl + C并在不使用relesing按钮的情况下切换到另一个按钮来检查它)。 请再试一次你的第一次施工。这对我有用!

    private void listView1_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.Control && e.KeyCode == Keys.C)
        {
            Text = "got it";
        }
    }