当用户在带有 AccptsReturn="True" 的 WPF 文本框中按下 ENTER 键时如何避免换行
How to avoid a new line when user presses ENTER key in a WPF TextBox with AccptsReturn="True"
我有一个 WPF C# 文本编辑应用程序,我需要在用户按下 CTRL + ENTER 组合时添加一个新行,并在用户按下 ENTER 键时执行另一个操作。我尝试在 Keydown 事件中使用以下代码,但是当按下 ENTER 时添加该行,而当按下 CTRL + ENTER 时不添加。欢迎任何帮助。谢谢
private void rtbText_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyboardDevice.IsKeyDown(Key.LeftCtrl) || e.KeyboardDevice.IsKeyDown(Key.RightCtrl))
{
switch (e.Key)
{
case Key.Enter: break;
}
}
else
{
if (e.Key == Key.Enter)
{
btnFormat_Click(this, null);
e.Handled = true;
}
}
}
您可以使用 PreviewKeydown 事件实现此目的。当我们检测到 Ctrl+Enter 时,我们在文本中添加一个新行并将插入符号移到末尾。
private void rtbText_PreviewKeyDown(object sender, KeyEventArgs e)
{
if (e.KeyboardDevice.IsKeyDown(Key.LeftCtrl) || e.KeyboardDevice.IsKeyDown(Key.RightCtrl))
{
switch (e.Key)
{
case Key.Enter:
TextBox t = sender as TextBox;
t.Text += Environment.NewLine;
t.CaretIndex = t.Text.Length - 1;
break;
}
}
else
{
if (e.Key == Key.Enter)
{
btnFormat_Click(this, null);
e.Handled = true;
}
}
}
我有一个 WPF C# 文本编辑应用程序,我需要在用户按下 CTRL + ENTER 组合时添加一个新行,并在用户按下 ENTER 键时执行另一个操作。我尝试在 Keydown 事件中使用以下代码,但是当按下 ENTER 时添加该行,而当按下 CTRL + ENTER 时不添加。欢迎任何帮助。谢谢
private void rtbText_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyboardDevice.IsKeyDown(Key.LeftCtrl) || e.KeyboardDevice.IsKeyDown(Key.RightCtrl))
{
switch (e.Key)
{
case Key.Enter: break;
}
}
else
{
if (e.Key == Key.Enter)
{
btnFormat_Click(this, null);
e.Handled = true;
}
}
}
您可以使用 PreviewKeydown 事件实现此目的。当我们检测到 Ctrl+Enter 时,我们在文本中添加一个新行并将插入符号移到末尾。
private void rtbText_PreviewKeyDown(object sender, KeyEventArgs e)
{
if (e.KeyboardDevice.IsKeyDown(Key.LeftCtrl) || e.KeyboardDevice.IsKeyDown(Key.RightCtrl))
{
switch (e.Key)
{
case Key.Enter:
TextBox t = sender as TextBox;
t.Text += Environment.NewLine;
t.CaretIndex = t.Text.Length - 1;
break;
}
}
else
{
if (e.Key == Key.Enter)
{
btnFormat_Click(this, null);
e.Handled = true;
}
}
}