e.KeyCode和KeyEventArgs无效

时间:2013-11-21 19:04:27

标签: c#

我正在尝试制作网络摄像头程序,我想通过按空格键来启动网络摄像头,所以我尝试了以下代码:

private void mainWindow_PreviewKeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Space)

                webcam.Start(0);
        }

使用System.Windows.Input将显示此错误:

Error   2   'System.Windows.Input.KeyEventArgs' does not contain a definition for 'KeyCode' and no extension method 'KeyCode' accepting a first argument of type 'System.Windows.Input.KeyEventArgs' could be found (are you missing a using directive or an assembly reference?)   C:\Users\User\Desktop\WebCam\Window1.xaml.cs    44  19  WebCam

当我使用System.Windows.Forms时,它会显示:

Error   1   No overload for 'mainWindow_PreviewKeyDown' matches delegate 'System.Windows.Input.KeyEventHandler' C:\Users\User\Desktop\WebCam\Window1.xaml   4   47  WebCam

我如何通过这个? 我也使用Visual Studios 2012 Express。

2 个答案:

答案 0 :(得分:0)

尝试覆盖OnPreviewKeyDown,如下所示:

protected override void OnPreviewKeyDown(KeyEventArgs e)
{
    base.OnPreviewKeyDown(e);

    if (e.Key == Key.Space)
    {
        MessageBox.Show("Space key down");
    }
}

答案 1 :(得分:0)

您可以覆盖ProcessCmdKey,如下所示:

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
        {

               if (keyData == Keys.Space)
               {
                webcam.Start(0);
                    return true;
                }

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