Редактируемый ComboBox не работает с TextChanged KeyEventArgs - PullRequest
0 голосов
/ 21 марта 2019

У меня есть Editable ComboBox, но я хочу разрешить Numbers и Backspace при наборе.

Я видел здесь , как добавить TextChange Event к нему с помощью TextBoxBase.TextChanged.

При компиляции выдается ошибка:

Нет перегрузки для делегата совпадений cboVideo_TextChanged «TextChangedEventHandler`


<ComboBox x:Name="cboVideo" 
          ItemsSource="{Binding Video_Items}"
          SelectedItem="{Binding Video_SelectedItem}" 
          SelectionChanged="cboVideo_SelectionChanged"    

          IsEditable="{Binding Video_IsEditable, Mode=TwoWay}"
          Text="{Binding Video_Text}"
          TextBoxBase.TextChanged="cboVideo_TextChanged"

          IsTextSearchEnabled="False" 

          HorizontalAlignment="Left" 
          VerticalAlignment="Top" 
          Width="105" 
          Margin="0,2,0,0"/>

Первоначально RoutedEventArgs, я изменил его на KeyEventArgs.

// Only allow Numbers and Backspace
//
private void cboVideo_TextChanged(object sender, KeyEventArgs e)
{
    if (!(e.Key >= Key.D0 && e.Key <= Key.D9) && e.Key != Key.Back)
    {
        e.Handled = true;
    }
}

1 Ответ

0 голосов
/ 25 марта 2019

Там написано:

Нет перегрузки для 'cboVideo_TextChanged' делегата совпадений 'TextChangedEventHandler`


Это совершенно нормально, потому что вы используете неправильноаргументы события на неправильном обработчике события .

Вы не можете обработать a TextChanged событие с событием KeyEventArgs.Вы должны использовать TextChangedEventArgs с обработчиком событий TextChanged.

После того, как вы измените его на TextChangedEventArgs, вы можете получить все, что изменилось по свойству TextChangedEventArgs.Changes.

Затем просто используйте switch() или if(), чтобы выполнить проверку с.Вы можете проверить , если изменение является числом , тогда вы можете установить EventArgs.Handled на true или false.

ПРИМЕЧАНИЕ: Вы также можете использовать RoutedEventArgs, потому что TextChangedEventArgs основано на этом .Но я рекомендую использовать TextChangedEventArgs.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...