5

我在form2中有一个文本框和一个按钮。当在 form1 中单击一个项目时,会出现 form2。我想在文本框为空时禁用 form2 中的按钮,但是当用户开始输入时,我想启用该按钮。

我曾尝试在我的构造函数中像这样在 initialisecomponent() 之后使用 if ,但它不起作用:

if(textbox1.text != "")
{
   btnOne.Enabled = true;
}

我还尝试调用checkText()在初始化组件之后调用的方法,该组件使用 do-while 循环进行检查,例如:

do{
    btnOne.Enabled = true
  }
 while(textbox1.text != "");

任何人都可以帮忙吗?

4

3 回答 3

8

你需要使用一个事件。查看控件的TextChanged事件。TextBox

基本上你会想要这样的东西:

private void textbox1_TextChanged(object sender, EventArgs e)
{
    btnOne.Enabled = !string.IsNullOrEmpty(textbox1.Text);
}

如果您使用的是 Visual Studio,您可以执行以下操作来添加事件代码。

  • 打开设计器视图
  • 选择文本框控件
  • 查看“事件”窗口
  • 找到“TextChanged”事件
  • 双击值空间,将自动添加代码供您使用

注意:这种方法将要求用户TextBox在事件触发之前“失去焦点”在控件上。如果您想要一个即用型解决方案,请查看KeyUp事件

@Asif 在检查空白字符方面也提出了一个很好的观点。这是您对有效内容的要求,但如果您不想允许使用空白值,则可以改用IsNullOrWhiteSpace方法 - 但是,这需要您使用 .Net Framework 4.0 或更高版本

于 2012-10-26T10:24:29.177 回答
0

在 Windows 窗体中使用文本框更改事件

于 2012-10-26T10:28:32.950 回答
0

如果您不允许空格作为有效输入,那么您应该使用 string.IsNullOrWhiteSpace而不是string.IsNullOrEmpty.

textbox1.TextChanged += (sender, e)
{
    btnOne.Enabled = !string.IsNullOrWhiteSpace(textbox1.Text);
};
于 2012-10-26T10:29:48.160 回答