多行文本框与skype的功能

本文关键字:skype 功能 文本 | 更新日期: 2023-09-27 18:05:44

我试图有一个文本框,当Shift+Enter被按下时创建新行,当Enter被按下时我们可以得到键事件在KeyDown事件的后端,我想注意,如果Enter被按下,然后做一些事情。

if (e.Key.Equals(Key.RightShift))
            {
}

对于单行很好。只要我点击AcceptReturn = truetextwrappingwrap,然后按下Enter,新行被添加到文本框中,但event does not fire up.

我想要新的行发生在Shift+Enter

和on Enter事件应该触发。任何想法?

多行文本框与skype的功能

我想你可能需要处理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
        }
    }