未捕获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、。。。这应该会有帮助:谢谢你,这非常有帮助:)