【问题标题】:How do I enable button while there is a string in my textbox?文本框中有字符串时如何启用按钮?
【发布时间】:2012-10-26 10:22:03
【问题描述】:

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

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

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

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

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

谁能帮忙?

【问题讨论】:

  • 只是对您的 do while 循环发表评论。这很糟糕,因为它会冻结 UI 线程

标签: c# winforms


【解决方案1】:

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

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

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

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

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

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

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

【讨论】:

  • @ifelabolz:它由TextBox 控件调用,但事件(假设您按照我的说明进行操作)将在designer.cs 文件中注册。我建议您对事件进行一些研究,您似乎并不熟悉它们,但您会希望在开发过程中经常使用它们
  • 是的,我了解事件发生了什么,我最初认为我必须在代码中调用它,这是在您将控件添加到您的答案之前,谢谢我现在可以工作了。跨度>
  • @ifelabolz:嗯...没有什么比接受别人的回答更能表达感谢了 ;-)
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

    • 这值得商榷......也许空格是有效的输入,我不太可能知道,但我认为你不应该说一个比另一个更好
    • 可能但不太可能。
    • 两个答案都有效,在这种情况下空格无效,谢谢@Asif
    猜你喜欢
    • 1970-01-01
    • 2012-05-23
    • 2010-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多