2

我是 C# 的初学者,正在做一个计算器。但我想禁用“GO!” 当 textbox1 中没有输入数字时按钮,一旦用户在其中输入数字,“GO!” 按钮再次启用...如何在 C# 中执行此操作?我尝试过这样的 KeyDown 和 KeyPress 事件,但从未奏效

private void Form1_Load(object sender, EventArgs e)
    {

            button15.Enabled = false;
         button16.Enabled = false;     

    }


 private void textBox1_KeyPress(object sender, System.Windows.Forms.KeyEventArgs e)
    {

       if (e.KeyCode < Keys.D0 || e.KeyCode > Keys.D9)
        {
            button15.Enabled = true;
            button16.Enabled = true;

        }
        else
        {
            button15.Enabled = false;
            button16.Enabled = false;
        }

    } 

那么该怎么做呢?提前致谢 。

4

4 回答 4

7

你的想法很好,但有更好的方法。只需检测文本框的内容何时发生变化。当内容发生变化时,检查内容是否为空。如果内容为空,则禁用该按钮,否则启用它。

http://msdn.microsoft.com/en-us/library/system.windows.forms.control.textchanged.aspx

此外,最好将控件的名称更改为默认值以外的名称。“button15”什么都不告诉代码的读者,“goButton”可以。

于 2010-03-06T15:32:44.590 回答
3
private void textBox1_TextChanged(object sender, EventArgs e)
{
      if(String.IsNullOrEmpty(textBox1.Text))
      {
            button15.Enabled = false;
            button16.Enabled = false;
      }
      else
      {
            button15.Enabled = true;
            button16.Enabled = true;
      }
}
于 2010-03-06T15:37:28.340 回答
3

您需要检查文本框值是否可以实际转换为数字。检查数字还不够好,你会接受像“4-”这样的不好的东西,或者拒绝像“1e3”这样的好东西。请使用有意义的控件名称,以免意外启用错误的控件。例如:

private void txtOperand_TextChanged(object sender, EventArgs e) {
  double value;
  btnGo.Enabled = double.TryParse(txtOperand.Text, out value);
}

这可能对您的计算器来说不够好,但演示了该方法。

于 2010-03-06T15:57:01.737 回答
1

如何使用该TextChanged事件,然后检查文本框是否为空或其中是否有内容并相应地启用或禁用按钮?

此外,如果您使用的是 WPF,您可以为您的 GO 按钮编写一个命令,该命令将自动处理命令的激活和停用(以及任何订阅它的控件)。您的激活逻辑只是检查文本框中是否有文本。

于 2010-03-06T15:34:10.507 回答