C# 如何禁用按钮,直到文本框在c中不为空?

C# 如何禁用按钮,直到文本框在c中不为空?,c#,winforms,textbox,C#,Winforms,Textbox,我正在使用C语言的windows窗体。我需要在用户填写文本框后启用“确定”按钮 我的问题是,上面提到的文本框是在运行时创建的。它不是以前在表单中设计的 对于以前设计的textbox,textbox\u textchanged事件可用于跟踪textbox的输入值。但是如何处理这种情况呢?您还可以将事件处理程序附加到代码中创建文本框的位置,如下所示: .... TextBox textbox = new TextBox(); textBox.TextChanged += textbox_textc

我正在使用C语言的windows窗体。我需要在用户填写文本框后启用“确定”按钮

我的问题是,上面提到的文本框是在运行时创建的。它不是以前在表单中设计的


对于以前设计的textbox,textbox\u textchanged事件可用于跟踪textbox的输入值。但是如何处理这种情况呢?

您还可以将事件处理程序附加到代码中创建文本框的位置,如下所示:

....

TextBox textbox = new TextBox();
textBox.TextChanged += textbox_textchanged;

...
事件处理程序如下所示:

private void textBox_TextChanged(object sender, EventArgs e)
{
    TextBox box = sender as TextBox;
    okButton.Enabled = !string.IsNullOrEmpty(box.Text);
}

可以将委托添加到动态创建的文本框中,就像将委托添加到设计时静态添加的文本框中一样

TextBox txtBox = new TextBox();
txtBox.TextChanged += TextChangedHandler;
在委托TextChangedHandler中,从发送者参数访问文本框,如下所示

void TextChangedHandler(object sender, EventArgs e)
{
  var txtBox = sender as TextBox;
  var text = txtBox.Text;
}

这篇10年前的文章回答了您的问题:如何对多个文本框执行此操作,这些文本框根据应用程序的逻辑创建动态依赖项。如果只有一个OK按钮需要启用,那么在填充所有文本框后,您可以将相同的事件处理程序附加到所有文本框,将这些框添加到私有列表“MyTextBox”,并将事件处理程序的主体更改为okButton.enabled=MyBox.Allbox=>!string.IsNullOrEmptybox.Text;