当文本框插入符号改变时,是否有机会引发事件?

本文关键字:机会 事件 是否 文本 插入 符号 改变 | 更新日期: 2023-09-27 18:19:08

当TextBox发生变化时,我需要调用一个方法,但TextBox.Caret不是DependencyProperty,因此没有可能绑定它。如何知道插入符号的位置何时改变?

当文本框插入符号改变时,是否有机会引发事件?

您可以尝试处理TextBoxSelectionChanged事件。

在XAML中,您可以这样定义文本框:

<TextBox x:Name="myTextBox" SelectionChanged="TextBox_SelectionChanged" />

接下来,编写处理光标更改的方法:

private void TextBox_SelectionChanged(object sender, RoutedEventArgs e)
{
    int caretPosition = myTextBox.CaretIndex;
    //put your handling code here...
}

它在每次插入符号改变时触发,例如获得焦点,用箭头键移动光标,用鼠标改变光标位置等。

如果你在几个文本框中需要这种行为,你也可以基于TextBox创建自己的类,并以类似的方式创建自己的事件。

我已经在WPF项目中测试过了,但它应该也能在Silverlight项目中工作。

虽然接受的答案实际上是正确的,但请注意,CaretIndex不会改变,例如,您有一个字母并且您从左到右选择它:您希望CaretIndex具有值1,但您会发现它具有值0