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}"/>

変更を取得したいだけの場合は、これを試してください (テキストボックスに文字列を貼り付けることもできるため、KeyDown の代わりに TextChanged-Event を使用します)。

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 に答える