4

我对c#很陌生,我想做的第一件事就是通过尝试Key's Combination Events来熟悉那个环境。特别是alt+k。我正在研究Microsoft Visual c# 2010 Express。我想测试该代码是否有效。如果发现错误,请通知我:)

public void begin(object sender, KeyEventArgs ev)
{
    if (ev.KeyCode == Keys.K && ev.Modifiers == Keys.Alt)
    {
        //display a message
    }
}

但即使我理论上知道单击新项目时提出的不同项目模型是什么以及它们的用途是什么,我还是尝试了几个模型来测试该代码,但均未成功。简而言之,我不知道要选择什么模型以及将代码放在哪里来测试那种简单的代码,更准确地说是使用极简 gui处理事件(键+鼠标) 。有人可以帮我告诉我如何具体开始使用 c# 中的事件内容吗?提前谢谢:)

4

2 回答 2

2

MSDN 文档有一个很好的例子来说明你需要做什么。这里有几个重要的部分:

  • 从一个简单的“Windows 窗体”应用程序开始。虽然有许多其他类型的应用程序,但 WinForms 是最简单的开始。
  • 连接 KeyPress 事件。 在 Form 构造函数中,您需要告诉它当它收到 KeyPress 事件时要做什么。如果您将上述begin问题中的函数名称更改为Form1_KeyPress(以更准确地描述它的作用),则以下代码应该可以工作:

    this.KeyPress += new KeyPressEventHandler(Form1_KeyPress);

  • 使用KeyPressEventArgs而不是KeyEventArgs. 它可能会或可能不会产生巨大的差异,但最好尽可能使用最具体的EventArgs,以便您可以使用特定于它的属性。

  • 注意KeyPressEventArgs.Handled 如果您在表单上的其他对象(例如按钮或文本框)上有 KeyPress (或其他一些键盘事件),您需要说明该事件是否在那里处理或者它是否应该冒泡到父级(在您的情况下,表格)。

编辑(感谢@RBarryYoung):

  • 在表单构造函数中设置this.KeyPreview = true为了让您的表单接收在子控件(例如按钮和文本框)上发生的键盘事件,如上面的提示中所述,您需要将此属性设置true为允许表单首先查看键盘发生在孩子身上的事件。(注意:当然,这个技巧和上一个技巧仅适用于您希望表单看到这些事件的情况。有时,您可能希望键盘快捷键被困在子控件中,而不是在父控件中处理。)
于 2013-05-01T20:42:24.347 回答
0

它可以帮助您:

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
    if (keyData == Keys.K && this.AcceptButton == null)
    {
        MessageBox.Show("Key K pressed");
    }

    return base.ProcessCmdKey(ref msg, keyData);
}

它将检测是否在表单的任何控件中按下键 K 并返回 msgbox

测试它并尝试按照自己的方式工作。

于 2013-05-01T20:40:48.330 回答