2016-02-19 17 views
1

如何捕获在ListView上按下的“ctrl + c”键?ListView上的Ctrl + C识别为“LButton | Sift Key”

我想这样的

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

那么,你不能用这样的断点调试GUI代码。它释放了你的鼠标左键和换档键。 –

回答

1

这是更好地赶下来的关键事件(我已经通过按住Ctrl + C和开关检查它的编辑到另一个时没有relesing按钮)。 请再试一次您的第一个建筑。这对我来说很有用!

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

是的你说得对!似乎是KeyUp的东西。我会更新fost –