首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可编辑ComboBox不使用TextChanged KeyEventArgs

可编辑ComboBox不使用TextChanged KeyEventArgs
EN

Stack Overflow用户
提问于 2019-03-21 18:36:59
回答 1查看 995关注 0票数 0

我有一个Editable ComboBox,但只希望在输入它时允许NumbersBackspace

我看到了here如何用TextBoxBase.TextChanged向它添加一个TextChange Event

在编译时,我得到以下错误:

“cboVideo_TextChanged”匹配委托'TextChangedEventHandler`‘没有重载

代码语言:javascript
复制
<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

代码语言:javascript
复制
// 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;
    }
}
EN

回答 1

Stack Overflow用户

发布于 2019-03-25 10:34:16

上面写着:

“cboVideo_TextChanged”匹配委托'TextChangedEventHandler`‘没有重载

这是完全正常的,因为您在错误的事件处理程序上使用了错误的事件参数。

不能用KeyEventArgs事件处理TextChanged事件。必须将 TextChangedEventArgsTextChanged事件处理程序一起使用。

将其更改为TextChangedEventArgs之后,您可以获得通过属性TextChangedEventArgs.Changes更改的任何内容。

然后,只需使用switch()if()进行任何检查s。您可以检查是否为数字,然后可以将EventArgs.Handled设置为truefalse

注意:您也可以使用RoutedEventArgs,因为TextChangedEventArgs 是基于它的。但我建议使用 TextChangedEventArgs

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55287142

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档