C# 如果文本框已填充,则启用按钮

C# 如果文本框已填充,则启用按钮,c#,C#,我曾尝试对一个按钮进行编码,使其在表单加载时被禁用,但在文本框输入文本后被启用。下面是我的代码,可能大家都很熟悉: Public Form() { InitializeComponent(); this.button1.enabled = false; } private void textbox_TextChanged (object sender, EventArgs e) { button1.Enabled = !string.IsNullOrWhiteSpace(tex

我曾尝试对一个按钮进行编码,使其在表单加载时被禁用,但在文本框输入文本后被启用。下面是我的代码,可能大家都很熟悉:

Public Form()
{
    InitializeComponent();
    this.button1.enabled = false;
}

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

按钮确实加载禁用,启用功能在文本输入时不起作用,我不确定问题可能是什么。这是一种情态形式,它才是最重要的。我想知道我是否需要一个事件监听器(尽管我不确定它们到底是如何工作的)。

这能用吗?但是我看不出你的代码有什么问题

button1.Enabled = textbox.Text != "";

我希望这能有所帮助。

检查Designer.cs文件,确保在那里注册了事件处理程序。大概是这样的:

this.textBox.TextChanged += new System.EventHandler(this.textBox_TextChanged);
试试这个

private void Form1_Load(object sender, EventArgs e)
{
    button1.Enabled = false;
}

private void textBox1_TextChanged(object sender, EventArgs e)
{
    if (string.IsNullOrEmpty(textBox1.Text))
    {
        button1.Enabled = true;
    }
}

可能不是问题的解决方案,但这将是计算机执行的最快检查(至少如果让JIT编译器优化代码):


您可以在
TextBox
TextChanged
属性上尝试以下任一操作:

private void textBox1_TextChanged(object sender, EventArgs e)
{  
    if (textbox.Text.Length > 0)
    {
        button1.Enabled = true;
    }
    else
        button1.Enabled = false;
}
或者,使用
string.IsNullOrEmpty
方法:

private void textBox1_TextChanged(object sender, EventArgs e)
{  
    if (!string.IsNullOrEmpty(textbox.Text))
    {
        button1.Enabled = true;
    }
    else
        button1.Enabled = false;
}
下一行:

button1.Enabled = !string.IsNullOrWhiteSpace(textbox.Text);

如果该方法不适用于您或您遇到错误,则可能是因为该方法是在.NET 4中引入的

在设置button1的Enabled属性的行中放置断点。查看事件是否正确触发。如果未触发,您可能会错过在设计器中设置事件处理程序。这行代码
button1.Enabled=!string.IsNullOrWhiteSpace(textbox.Text)抛出任何错误?嗨,谢谢你的帮助。我试图添加处理程序注册,但出现错误“表单不包含…”的定义。值得一提的是,我成功地将一个事件处理程序添加到另一个textbox,按钮启用功能在那里工作得非常好。抱歉,这是我犯的一个愚蠢的错误……我一开始并没有声明textbox\u TextChanged事件。现在都在工作。非常感谢你的帮助!
button1.Enabled = !string.IsNullOrWhiteSpace(textbox.Text);