在c#winform中更改的文本上启用禁用按钮

时间:2013-01-16 03:37:42

标签: c# winforms

我正在开发一个应用程序,其中搜索框中有一个按钮(就像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;
        }
    }

请帮忙

6 个答案:

答案 0 :(得分:3)

这是一个简单的解决方案。

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

当然,您必须在表单初始加载时设置button.Enabled = false,因为文本框事件在启动时不会触发(对于您当前为问题提供的所有答案都是如此)。

答案 1 :(得分:2)

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

答案 2 :(得分: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您需要将sender转换为TextBox并使用Text值进行空值或空检查

答案 3 :(得分:0)

尝试将发件人转换为TextBox:

if (string.IsNullOrEmpty(((TextBox)sender).Text))

答案 4 :(得分:0)

一个班轮:

btn_cancel.Visible = textBox1.Text.Length > 0;

答案 5 :(得分: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的东西上,则可以避免异常。