Determine when and which character is added or deleted in a Text Box

前端 未结 2 966
庸人自扰
庸人自扰 2020-12-20 20:41

I have a simple text box in a WPF application.

I need to know when a character was added/deleted in the text box, which character a

相关标签:
2条回答
  • 2020-12-20 20:53

    Found the solution. In WPF, the TextBox.TextChanged event has a TextChangedEventArgs. In this class, there is a property named Changes.

    Here's my code:

    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));
            }
        }
    }
    

    Now I just need to wait two days to accept this answer. :)

    Thanks anyway.

    0 讨论(0)
  • 2020-12-20 21:04

    You can use a "brute force" method - the text box (in winforms and I think in WPF as well) has a text changed event you can use and by comparing the text before the event and the current text you can find what character has been added or removed.

    0 讨论(0)
提交回复
热议问题