0

我是 devexpress WPF 应用程序的新用户。我真的很想学习如何检测文本框事件的任何变化?例如; 有 2 个文本框 (devexpress) (txt1,txt2) 。如果我擦除 txt1 上的值,则 txt2 必须擦除自己的值。

像那样:

  private void txt1_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.Key == Key.Delete)
        {
            txt2.Text = String.Empty;
        }
    }

是真的吗?你能帮助我吗?

4

1 回答 1

1

如果 txt2 的文本必须与 txt1 中的文本完全相同,请使用绑定:

<TextBox Name="txt2" Text="{Binding ElementName=txt1, Path=Text}"/>

如果您只想获取更改,请尝试以下操作(使用 TextChanged-Event 而不是 KeyDown,因为您也可以将字符串粘贴到文本框中):

string oldtext = "";
private void TextBox_TextChanged(object sender, TextChangedEventArgs e)
{
    string removedstring = "";
    string addedstring = "";
    TextBox source = (TextBox)e.Source;
    TextChange t = e.Changes.First();

    if (t.RemovedLength > 0)
    {
        removedstring = oldtext.Substring(t.Offset, t.RemovedLength);
    }

    if (t.AddedLength > 0)
    {
        addedstring = source.Text.Substring(t.Offset, t.AddedLength);
    }

    oldtext = source.Text;
}

如果要通过代码设置 txt2.Text = txt1.Text

private void TextBox_TextChanged(object sender, TextChangedEventArgs e)
    {
        TextBox source = (TextBox)e.Source;
        TextChange t = e.Changes.First();

        string first = txt2.Text.Substring(0, t.Offset);
        string added = source.Text.Substring(t.Offset, t.AddedLength);
        string last = (t.Offset+1>tbrt.Text.Length)?"":txt2.Text.Substring(t.Offset, txt2.Text.Length-1);
        last = last.Remove(0, t.RemovedLength);
        txt2.Text = first + added + last;
    }
于 2012-09-27T07:12:26.850 回答