Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 带键盘覆盖的wpf扩展控件_C#_Wpf - Fatal编程技术网

C# 带键盘覆盖的wpf扩展控件

C# 带键盘覆盖的wpf扩展控件,c#,wpf,C#,Wpf,我正在扩展控件画布,并为MouseEvents添加自己的自定义覆盖。我很想知道为什么这种基本的覆盖,即当用户按下键盘上的任何键时,它不会发出信号。如何使此重写在wpf c#中工作 这将适用于您的特定示例。正如其他人所指出的,您必须使Canvas可聚焦并实际聚焦,以便它接收键盘事件 public class CanvasGraph : Canvas { public CanvasGraph() { Focusable = true; Loaded +

我正在扩展控件画布,并为MouseEvents添加自己的自定义覆盖。我很想知道为什么这种基本的覆盖,即当用户按下键盘上的任何键时,它不会发出信号。如何使此重写在wpf c#中工作


这将适用于您的特定示例。正如其他人所指出的,您必须使
Canvas
可聚焦并实际聚焦,以便它接收键盘事件

public class CanvasGraph : Canvas
{
    public CanvasGraph()
    {
        Focusable = true;
        Loaded += OnCanvasGraphLoaded;
    }

    private void OnCanvasGraphLoaded(object sender, RoutedEventArgs routedEventArgs)
    {
        Focus();
        Loaded -= OnCanvasGraphLoaded;
    }

    protected override void OnKeyDown(KeyEventArgs e)
    {
        base.OnKeyDown(e);
        if (e.Key == Key.Enter)
        {
            Console.WriteLine("context menu open");
            e.Handled = true;
        }
    }
}

这将适用于您的特定示例。正如其他人所指出的,您必须使
Canvas
可聚焦并实际聚焦,以便它接收键盘事件

public class CanvasGraph : Canvas
{
    public CanvasGraph()
    {
        Focusable = true;
        Loaded += OnCanvasGraphLoaded;
    }

    private void OnCanvasGraphLoaded(object sender, RoutedEventArgs routedEventArgs)
    {
        Focus();
        Loaded -= OnCanvasGraphLoaded;
    }

    protected override void OnKeyDown(KeyEventArgs e)
    {
        base.OnKeyDown(e);
        if (e.Key == Key.Enter)
        {
            Console.WriteLine("context menu open");
            e.Handled = true;
        }
    }
}

控件必须具有焦点。您可以对此进行测试:
这也可以帮助您:控件必须具有焦点。您可以对此进行测试:
这还可以帮助您: