Silverlight 如何知道在textbox的TextChanged事件中是否按了backspace或delete

Silverlight 如何知道在textbox的TextChanged事件中是否按了backspace或delete,silverlight,textbox,Silverlight,Textbox,我使用textbox的TextChanged事件 例如,我在文本框中有文本: “a b”-a、b之间的2个空格 我走在2个空间的中间,击中后空格。我无法通过将新文本与按下的旧文本进行比较进行检查(如果按了backspace或delete,则新文本为 相同的“a b”-字母之间有1个空格 如何检查按下了哪个键?你为什么关心?如果你正在处理TextChanged事件,你不应该关心文本发生了什么变化,而应该关心它发生了什么变化 如果您需要关心具体更改的内容,则需要处理较低级别的事件,如: 你为什么关心

我使用textbox的TextChanged事件

例如,我在文本框中有文本: “a b”-a、b之间的2个空格 我走在2个空间的中间,击中后空格。我无法通过将新文本与按下的旧文本进行比较进行检查(如果按了backspace或delete,则新文本为 相同的“a b”-字母之间有1个空格


如何检查按下了哪个键?

你为什么关心?如果你正在处理
TextChanged
事件,你不应该关心文本发生了什么变化,而应该关心它发生了什么变化

如果您需要关心具体更改的内容,则需要处理较低级别的事件,如:


你为什么关心?如果你正在处理
TextChanged
事件,你不应该关心文本被更改了什么,而应该关心它被更改的事实

如果您需要关心具体更改的内容,则需要处理较低级别的事件,如:


我知道这是个老问题,但也许有人会觉得这很有帮助

我使用了一个整数,它计算当前字符的长度。它随事件而更新。 每次触发事件时,我都会检查计数器的长度是否超过文本的当前长度。如果是,我们知道,删除了某些内容

    private int counter = 0;

private void TextChangedEvent(object sender, TextChangedEventArgs e){

if(counter > textbox.text){
counter = text.Length;
//deleted
}

else{
counter = text.Length;
//added}

我知道这是个老问题,但也许有人会觉得这很有帮助

我使用了一个整数,它计算当前字符的长度。它随事件而更新。 每次触发事件时,我都会检查计数器的长度是否超过文本的当前长度。如果是,我们知道,删除了某些内容

    private int counter = 0;

private void TextChangedEvent(object sender, TextChangedEventArgs e){

if(counter > textbox.text){
counter = text.Length;
//deleted
}

else{
counter = text.Length;
//added}

你为什么不使用按键事件呢?@Alireza:因为你无法确定是从
KeyPress
事件中按了Delete键还是Backspace键。你需要使用
KeyDown
KeyPress
键只由字符键引发。你为什么不使用按键事件呢?@Alireza:因为你无法确定是删除还是Backspace键已从
KeyPress
事件中按下。您需要使用
KeyDown
KeyPress
仅由字符键启动。