在我的UWP应用程序中,我希望我的TextBox
能够通过按 Enter 键转到新行,但我还需要在 Ctrl时触发操作按下 + Enter 。
问题是,当我按下 Ctrl + Enter时,我似乎无法找到阻止文本转到下一行的方法 。这是我试过的代码。
XAML
<TextBox x:Name="TextBox1" AcceptsReturn="True" />
在构造函数
中TextBox1.AddHandler(KeyDownEvent, new KeyEventHandler(TextBox1_KeyDown), true);
处理程序
private void TextBox1_KeyDown(object sender, KeyRoutedEventArgs e)
{
var ctrl = Window.Current.CoreWindow.GetKeyState(VirtualKey.Control);
if (ctrl.HasFlag(CoreVirtualKeyStates.Down) && e.Key == VirtualKey.Enter)
{
e.Handled = true;
}
}
答案 0 :(得分:4)
您可以创建一个继承自TextBox
的自定义类,并覆盖其OnKeyDown
方法,您可以完全控制触发base.OnKeyDown
方法以防止添加新行。
class CTRLEnterTextBox : TextBox
{
protected override void OnKeyDown(KeyRoutedEventArgs e)
{
if (Window.Current.CoreWindow.GetKeyState(VirtualKey.Control).HasFlag(CoreVirtualKeyStates.Down) && e.Key == VirtualKey.Enter)
{
e.Handled = true;
}
else
{
base.OnKeyDown(e);
}
}
}