1

検索ボックスにボタンがあるアプリケーションを開発しています(iTunesのような)。テキストボックスにテキストがあるときはいつでもキャンセルボタンを有効にし、テキストボックスが空のときは無効にしたい。次のコードで textbox の text_changed イベントを試してみましたが、if 条件を飛び越えてしまいます。送信者でさえ正しい値を送ってくれますが、そうでなければそれを入れることができません。

private void textBox1_TextChanged(object sender, EventArgs e)
    {
        if (string.IsNullOrEmpty(sender.ToString()))
        {
            btn_cancel.Visible = false;
        }
        else
        {
            btn_cancel.Visible = true;
        }
    }

助けてください

4

6 に答える 6

5

これが簡単な解決策です。

    private void textBox1_TextChanged(object sender, EventArgs e)
    {
        this.button1.Enabled = !string.IsNullOrWhiteSpace(this.textBox1.Text);
    }

もちろん、起動時に textbox イベントが発生しないため、フォームが最初に読み込まれるときに button.Enabled = false を設定する必要があります (質問に対して現在提供されているすべての回答に対して true です)。

于 2013-01-16T03:49:57.637 に答える
2
private void textBox1_TextChanged(object sender, EventArgs e)
{
    if (String.IsNullOrEmpty(textBox1.Text))
        btn_cancel.Visible = false;
    else
        btn_cancel.Visible = true;
}
于 2013-01-16T03:41:06.133 に答える
1

Try this:

private void textBox1_TextChanged(object sender, EventArgs e)
{
    var textbox = sender as TextBox;
    if (string.IsNullOrEmpty(textbox.Text))
    {
        btn_cancel.Visible = false;
    }
    else
    {
        btn_cancel.Visible = true;
    }
}

sender.ToString() will always return System.Windows.Forms.TextBox you need to cast sender as TextBox and use the Text value for your null or empty check

于 2013-01-16T03:40:24.703 に答える
0

これは私がそれを行う方法です:

private void textBox1_TextChanged(object sender, EventArgs e)
{        
    string text = ((sender as TextBox) == null ? string.Empty : (sender as TextBox).Text);
    this.button1.Enabled = (string.IsNullOrWhiteSpace(text) == false);
}

これは、イベント ソースが特定のコントロールであると想定せず、誤ってTextBox.

于 2013-03-18T13:07:13.170 に答える
0

try casting the sender to TextBox :

if (string.IsNullOrEmpty(((TextBox)sender).Text))
于 2013-01-16T03:40:58.813 に答える
0

一発ギャグ:

btn_cancel.Visible = textBox1.Text.Length > 0;
于 2013-01-16T03:43:26.607 に答える