未捕获C#箭头键

未捕获C#箭头键,c#,wpf,C#,Wpf,我正在创建一个程序,可以在整个桌面上绘图。我有不同的功能,例如绘制椭圆。还有一个用于插入一些文本的函数。为此,我使用了一个透明的文本框(Tbx)。当我调用此函数时,它会创建一个标签,每当我更改文本时,它都会获取文本框的文本。这工作得很好,但我还有一个函数,它应该使用↓. 插入文本后,该键无效,但其他键仍由事件处理程序捕获。如果我不在Textbox控件中插入文本,我可以最小化。主要的问题是↓ 事件处理程序不会捕获,并且不会发生最小化。我不确定KeyDownEvent是否是捕获特殊键(如箭头、Ctr

我正在创建一个程序,可以在整个桌面上绘图。我有不同的功能,例如绘制椭圆。还有一个用于插入一些文本的函数。为此,我使用了一个透明的
文本框
(Tbx)。当我调用此函数时,它会创建一个
标签
,每当我更改文本时,它都会获取
文本框
的文本。这工作得很好,但我还有一个函数,它应该使用↓. 插入文本后,该键无效,但其他键仍由事件处理程序捕获。如果我不在
Textbox
控件中插入文本,我可以最小化。主要的问题是↓ 事件处理程序不会捕获,并且不会发生最小化。我不确定
KeyDownEvent
是否是捕获特殊键(如箭头、Ctrl、…)的正确事件。。。所以问题是如何修复此代码以捕获↓ 并执行代码以最小化
窗口

以下是我的代码的一些部分:

创建标签:

Tbx.Clear();
if (!hasStartPoint)
{
    START = current;
    hasStartPoint = true;
}
this.canvas1.Children.Remove(Lab2);
Lab1 = new Label() { IsEnabled = true, Background = Brushes.Transparent, Foreground = this.brush, FontFamily = textFont, Content = "" };
if (this.thickness > 5000) { FontSize = 5000; }
else { FontSize = this.thickness; }
Canvas.SetLeft(Lab1, START.X);
Canvas.SetTop(Lab1, START.Y);
Tbx.Focus();
isWriting = true;
this.Cursor = Cursors.IBeam;
canvas1.Children.Add(Lab1);
Lab2 = Lab1;
写作文本:

void Tbx_TextChanged(object sender, TextChangedEventArgs e)
{
    if (isWriting)
    {
        Lab1.Content = Tbx.Text;
    }
}
写完:

else if (e.Key == Key.Enter || e.Key == Key.End)
{
    if (!isWriting)
    { this.Close(); }
    else
    {
        Lab1 = new Label() { IsEnabled = true, Background = Brushes.Transparent, Foreground = this.brush, FontSize = this.thickness, FontFamily = textFont, Content = "" };
        Canvas.SetLeft(Lab1, 1);
        Canvas.SetTop(Lab1, 1);
        canvas1.Children.Add(Lab1);
        isWriting = false;
        this.Cursor = Cursors.Cross;
    }
 }
按键事件中最小化窗口

else if (e.Key == Key.Down)
    this.WindowState = WindowState.Minimized;

捕捉特殊键的解决方案是使用。这是因为这些键不被视为某些控件的输入

某些按键(如TAB键、RETURN键、ESC键和箭头键)不可用 通常被某些控件忽略,因为它们未被考虑 按输入键。例如,默认情况下,按钮控件忽略 箭头键。按箭头键通常会使焦点消失 移动到上一个或下一个控件。考虑使用箭头键 导航键和按下这些键通常不会升起 按钮的KeyDown事件。但是,按箭头键可进行以下操作: 按钮不会引发PreviewKeyDown事件。通过处理 按钮的PreviewKeyDown事件并设置IsInputKey属性 若要设置为true,则可以在按下箭头键时引发KeyDown事件 按下。但是,如果您使用箭头键,焦点将不显示 长时间移动到上一个或下一个控件


我相信您正在寻找
PreviewKeyDownEvent
。它允许使用特殊的键,如箭头、Ctrl、。。。这应该会有帮助:谢谢你,这非常有帮助:)