Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 当文本框中有字符串时,如何启用按钮?_C#_Winforms - Fatal编程技术网

C# 当文本框中有字符串时,如何启用按钮?

C# 当文本框中有字符串时,如何启用按钮?,c#,winforms,C#,Winforms,我在form2中有一个文本框和一个按钮。在form1中单击项目时,将显示form2。当文本框为空时,我想保持form2中的按钮处于禁用状态,但当用户开始键入时,我想启用按钮 我曾尝试在initialisecomponent()之后的构造函数中使用if,但它不起作用: if(textbox1.text != "") { btnOne.Enabled = true; } 我还尝试在初始化组件之后调用名为checkText()的方法,该组件使用do while循环进行检查,如下所示: do{

我在form2中有一个文本框和一个按钮。在form1中单击项目时,将显示form2。当文本框为空时,我想保持form2中的按钮处于禁用状态,但当用户开始键入时,我想启用按钮

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

if(textbox1.text != "")
{
   btnOne.Enabled = true;
}
我还尝试在初始化组件之后调用名为
checkText()
的方法,该组件使用do while循环进行检查,如下所示:

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

有人能帮忙吗?

您需要使用事件。检查
文本框
控件的事件

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

private void textbox1_TextChanged(object sender, EventArgs e)
{
    btnOne.Enabled = !string.IsNullOrEmpty(textbox1.Text);
}
如果您使用的是Visual Studio,则可以执行以下操作来添加事件代码

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

注意:这种方法要求用户在触发事件之前“失去对
文本框
控件的关注”。如果您想要“键入时”解决方案,请改为签出事件


@Asif在检查空白字符方面也做得很好。这是对有效内容的调用,但如果不希望使用空白值,则可以使用该方法-但是,这要求您使用.Net Framework 4.0或更高版本

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

如果不允许空白作为有效输入,则应使用
string.IsNullOrWhiteSpace
而不是
string.IsNullOrEmpty

textbox1.TextChanged += (sender, e)
{
    btnOne.Enabled = !string.IsNullOrWhiteSpace(textbox1.Text);
};

这是有争议的。。。也许空白是有效的输入,不太可能,我知道,但我不认为你应该说一个比另一个好。可能,但不可能。两个答案都是有效的,在这种情况下空白是无效的,谢谢@Asif@ifelabolz:它由
文本框
控件调用,但事件(假设您按照我的说明操作)将在designer.cs文件中注册。我建议你对事件做一些研究,你似乎不熟悉它们,但你会想在开发过程中经常使用它们。是的,我了解事件发生了什么,我最初认为我必须在代码中调用它,这是在你将控件添加到你的答案之前,谢谢,我现在让它工作了。@ifelabolz:嗯。。。没有什么比接受别人的回答更能表达感谢的了;-)只是想对do-while循环做一个评论。这是非常糟糕的,因为它会冻结UI线程