我在WPF应用程序中有一个简单的文本框。
我需要知道 在文本框中添加/删除字符时,哪个字符以及其中添加或删除。
我考虑过使用TextBox.KeyDown
事件,但它存在一些问题:
KeyEventArgs
)。有什么想法吗?
答案 0 :(得分:8)
找到解决方案。在WPF中,TextBox.TextChanged
事件有TextChangedEventArgs
。在此类中,有一个名为Changes
的属性。
这是我的代码:
private void textBox1_TextChanged(object sender, TextChangedEventArgs e)
{
foreach (var change in e.Changes)
{
if (change.AddedLength > 0 && change.RemovedLength == 0)
{
if (change.AddedLength == 1)
{
AddCharacter(textBox1.Text[change.Offset], change.Offset);
}
else
{
AddString(textBox1.Text.Substring(change.Offset, change.AddedLength), change.Offset);
}
}
else if (change.AddedLength == 0 && change.RemovedLength > 0)
{
if (change.RemovedLength == 1)
{
RemoveCharacter(change.Offset);
}
else
{
RemoveString(change.Offset, change.RemovedLength + change.Offset);
}
}
else if (change.AddedLength == 1 & change.RemovedLength == 1)
{
ReplaceCharacter(change.Offset, textBox1.Text[change.Offset]);
}
else
{
ReplaceString(change.Offset, change.Offset + change.RemovedLength, textBox1.Text.Substring(change.Offset, change.AddedLength));
}
}
}
现在我只需要等两天才能接受这个答案。 :)
非常感谢。
答案 1 :(得分:3)
您可以使用“强力”方法 - 文本框(在winforms中,我认为在WPF中)也有一个可以使用的文本更改事件,并通过比较事件之前的文本和您可以找到的当前文本添加或删除了哪个字符。