【问题标题】:Ctrl+C on ListView recognises as "LButton | Shift Key"ListView 上的 Ctrl+C 识别为“LButton | Shift 键”
【发布时间】:2016-06-01 03:41:45
【问题描述】:

如何捕捉列表视图上按下的“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 时筛选键

P.S.:windows安装了两种语言,系统Win2012 R2

更新1:感谢您的评论!如果我记录操作,我会看到:

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);
}

更新2:

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

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

更新3:

KeyUp 活动的先前作品。对于 KeyDown 第一个 code-sn-p 有效

【问题讨论】:

  • 好吧,你不能用这样的断点调试 GUI 代码。它正在与您释放鼠标左键和 shift 键相冲突。

标签: c# winforms listview hotkeys


【解决方案1】:

最好捕获按键按下事件(我已经在编辑器上通过按住 Ctrl+C 并在不释放按钮的情况下切换到另一个 up 来检查它)。 请再试一次您的第一次施工。它对我有用!

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

【讨论】:

  • 是的,你是对的!似乎与KeyUp有关。我会更新fost
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多