当TextBox插入符更改时,是否有机会引发事件?

时间:2011-12-30 07:21:09

标签: c# wpf textbox caret

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

2 个答案:

答案 0 :(得分:3)

您可以尝试处理SelectionChanged的{​​{1}}事件。

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

TextBox

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

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

它会在每次插入符号更改时触发,因此在获得焦点时,使用箭头键移动光标,使用鼠标等更改光标位置。

如果您在多个文本框中需要此行为,您还可以根据private void TextBox_SelectionChanged(object sender, RoutedEventArgs e) { int caretPosition = myTextBox.CaretIndex; //put your handling code here... } 创建自己的clas并以类似方式创建自己的事件。

我在WPF项目中对此进行了测试,但它也适用于Silverlight项目。

答案 1 :(得分:0)

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