21

TextBox で、テキストの変更を監視しています。何かをする前にテキストをチェックする必要があります。しかし、今のところ古いテキストしか確認できません。新しい Text を取得するにはどうすればよいですか?

private void textChanged(object sender, EventArgs e)
{
    // need to check the new text
}

.NET Framework 4.5 に新しいクラスがあることは知っていますが、TextChangedEventArgs.NET Framework 2.0 を使用する必要があります。

4

4 に答える 4

20

新しい価値を手に入れる

Textのプロパティをそのまま使用できますTextBox。このイベントが複数のテキスト ボックスに使用される場合は、senderパラメーターを使用して正しいTextBoxコントロールを取得する必要があります。

private void textChanged(object sender, EventArgs e)
{
    TextBox textBox = sender as TextBox;
    if(textBox != null)
    {
        string theText = textBox.Text;
    }
}

OLD 値の取得

古い値を取得しようとしている場合は、自分で追跡する必要があります。空から始まり、各イベントの最後に変化する単純な変数をお勧めします。

string oldValue = "";
private void textChanged(object sender, EventArgs e)
{
    TextBox textBox = sender as TextBox;
    if(textBox != null)
    {
        string theText = textBox.Text;

        // Do something with OLD value here.

        // Finally, update the old value ready for next time.
        oldValue = theText;
    }
}

組み込みの TextBox コントロールを継承し、これを頻繁に使用する予定がある場合は、この追加機能を追加する独自の TextBox コントロールを作成できます。

于 2013-01-15T11:57:36.327 に答える
2

KeyUp、 KeyPress などのテキストボックスイベントを見てください。例:

private void textbox_KeyUp(object sender, KeyEventArgs e)
{
    // Do whatever you need.
}

たぶん、これらはあなたが探しているものを達成するのに役立つかもしれません.

于 2013-01-15T11:52:26.567 に答える
0

古い.net fw 2.0でも、イベントはテキストの変更中ではなく後で発生するため、textbox.textプロパティ自体にない場合でも、eventArgsに新しい値と古い値が必要です。

テキストが変更されている間に何かをしたい場合は、Changed ではなく KeyUp イベントを試してください。

于 2013-01-15T11:54:27.343 に答える