1

我正在开发一个应用程序,其中搜索框中有一个按钮(如 iTunes 中的一个)。我想在文本框中有文本时启用取消按钮,并在文本框为空时禁用它。我尝试使用以下代码在文本框上使用 text_changed 事件,但它跳过了 if 条件。即使发件人向我发送了正确的值,但我无法将其放入 if else 中。

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

当然,您必须在表单最初加载时设置 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

试试这个:

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()将始终返回System.Windows.Forms.TextBox您需要转换senderTextBox并使用该Text值进行空或空检查

于 2013-01-16T03:40:24.703 回答
0

尝试将发件人投射到 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 回答
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 回答