【问题标题】:Get Delete Keypress event in Windows Panel control [duplicate]在 Windows 面板控件中获取 Delete Keypress 事件[重复]
【发布时间】:2016-01-02 00:29:17
【问题描述】:

我在面板上有一些控件,我正在尝试使用“删除”按钮删除它们。我处理了How to get Keypress event in Windows Panel control in C# 中提到的 KeyPress 事件 我正在按下按钮(A-Z 和 1-9)的事件,但不是删除、控制/Alt/Shift 或 F1、F2.... 按钮。

我们需要做一些特殊的事情来处理这些按钮吗?

【问题讨论】:

  • 只有具有 focus 的控件才能获得击键。面板不喜欢获得焦点。它没有显示它具有焦点,并且您不能对其进行制表符,请注意它没有 TabIndex 属性。它是一个容器控件,面板内的任何内容都会获得焦点。为什么要这样做完全不清楚。不要使用面板。
  • @Hans,我正在使用面板在其上绘制一些控件。所以基本上发生的是用户可以使用鼠标点击绘制任何形状(矩形、三角形等)。现在我想要的是用户可以使用“删除”按钮删除任何选定的形状。类似于 Power Point 幻灯片之类的东西,我使用 Panel 作为形状的容器。

标签: c# winforms panel


【解决方案1】:

试试这样:

private void Window_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Delete)
    {
        e.Handled = true;
    }
}

您还需要设置KeyPreview

您也可以参考Keyboard.Modifiers Property

【讨论】:

  • @Pankaj, KeyDown(阅读相应的 mdsn 页面了解重要细节)是第一个要提及的事件,但有时您可能需要KeyUp
  • @Rahul Tripathi,谢谢。它现在正在工作。我从这里得到了更多的解释stackoverflow.com/questions/8188328/…
猜你喜欢
  • 2011-01-09
  • 2015-06-17
  • 2010-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-19
  • 1970-01-01
相关资源
最近更新 更多