多行文本框与skype的功能
本文关键字:skype 功能 文本 | 更新日期: 2023-09-27 18:05:44
我试图有一个文本框,当Shift+Enter
被按下时创建新行,当Enter
被按下时我们可以得到键事件在KeyDown
事件的后端,我想注意,如果Enter
被按下,然后做一些事情。
if (e.Key.Equals(Key.RightShift))
{
}
对于单行很好。只要我点击AcceptReturn = true
和textwrapping
到wrap
,然后按下Enter
,新行被添加到文本框中,但event does not fire up.
我想要新的行发生在Shift+Enter
和on Enter
事件应该触发。任何想法?
我想你可能需要处理PreviewKeyDown事件。抓住你想要处理的按键组合,处理它,然后设置e.Handled = true
以确保它不会在其他任何地方被处理,因为按键事件隧道&泡沫。
XAML:
<TextBox TextWrapping="Wrap" AcceptsReturn="True"
PreviewKeyDown="TextBox_PreviewKeyDown" />
后台代码:
private void TextBox_PreviewKeyDown(object sender, KeyEventArgs e)
{
if (e.KeyboardDevice.Modifiers == ModifierKeys.None && e.Key == Key.Enter)
{
e.Handled = true;
// Do your special enter handling here...
}
// Shift+Enter (and any other keys) will be handled as normally...
// ...you'll still get your new line on Shift+Enter
}
注意:如果您希望按回车键仍然添加新行以及作为您的特殊处理,那么只需删除e.Handled = true
行。
在KeyDown事件上尝试以下操作,应该可以在香草多行文本框上工作,不需要任何其他操作:
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (!e.Shift && e.KeyValue == (int)Keys.Enter)
{
e.SuppressKeyPress = true;
// Fire my custom event
}
}