Запретить отображение текстового окна WPF на нескольких строках - PullRequest
3 голосов
/ 25 июля 2011

У меня есть WPF TextBox, предназначенный для принятия поискового запроса и выполнения каких-либо действий с этим поисковым термином, когда пользователь нажимает клавишу Enter (с выделенным TextBox).

По необъяснимым причинам этот TextBox допускает несколькостроки текста для ввода.

Я установил TextWrapping на NoWrap и MaxLines на 1.Связанный обработчик события указывает, что он обрабатывает событие, когда Environment.NewLine завершает текст.

За исключением переноса, все остальное работает должным образом.Как я могу предотвратить перенос текста?

<TextBox Height="23" Margin="24,1,12,0" Name="txtSearch" VerticalAlignment="Top" TextWrapping="NoWrap" Visibility="Visible" MinWidth="50" LostFocus="txtSearch_LostFocus" AcceptsReturn="True" TextChanged="txtSearch_TextChanged" MaxLines="1" />


private void txtSearch_TextChanged(object sender, TextChangedEventArgs e)
{
    if (txtSearch.Text.EndsWith(Environment.NewLine))
    {
        string search = txtSearch.Text.Replace(Environment.NewLine, string.Empty);
        e.Handled = true;

        MainViewModel vm = (MainViewModel)this.FindResource("viewModel");
        vm.SearchText = search;
    }
}

Ответы [ 3 ]

6 голосов
/ 25 июля 2011

Вы имеете в виду, что это Wraps, когда вы нажмете Enter?Или когда текст становится слишком длинным?

У вас есть AcceptsReturn="True", что означает, что пользователь может использовать клавишу Enter внутри вашего TextBox для создания новой строки.Попробуйте вместо этого установить False.

2 голосов
/ 25 июля 2011

Вместо использования события с измененным текстом вы можете использовать события previewkeydown или previewkeyup ...

private void TextBox_PreviewKeyDown(object sender, KeyEventArgs e)
{
    if (e.Key == Key.Enter)
    {
         e.Handled = true;
         // handle search here
    } 
    else
    {
        // do some thing
    }
}
1 голос
/ 25 июля 2011

Установите AcceptsReturn в ложь, не правда. Значение true означает, что это допустимый текстовый ввод.

...