当文本框插入符号改变时,是否有机会引发事件?
本文关键字:机会 事件 是否 文本 插入 符号 改变 | 更新日期: 2023-09-27 18:19:08
当TextBox发生变化时,我需要调用一个方法,但TextBox.Caret
不是DependencyProperty
,因此没有可能绑定它。如何知道插入符号的位置何时改变?
您可以尝试处理TextBox
的SelectionChanged
事件。
在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
。