2017-08-04 46 views
1

我有一个表单,其中有各种文本框,并且希望在其他文本框中输入的值大于0时启用或禁用文本框。试过不同的解决方案,但没有运气现在。最后,我已经试过这样:在其他文本框中更改值时启用或禁用文本框

protected void TextBox7_TextChanged(object sender, EventArgs e) 
{ 
    if (TextBox7.Text.Trim().Length>0) 
    { 
     TextBox9.Enabled = true; 
    } 
    else 
    { 
     TextBox9.Enabled = false; 
    } 
} 
+1

在您的代码中,您正在测试TextBox7中数据的长度,但在测试说明中,您说要测试值“0”。这是一个错字吗?或者你想要检查什么? –

+0

将您的代码更改为'TextBox9.Enabled = string.IsNullOrWhiteSpace(TextBox7.Text);'获得相同的结果,但性能更快,可读性更好。 –

回答

1

代码看起来很好,除了一些恼人的名字(尝试遵循一些命名约定)。既然是网页表单,你必须确保下面的东西,使其工作:

相应的控制
  • AutoPostBack属性设置为true
  • 只有当控件失去焦点将触发
0

试试这个

string.IsNullOrEmpty(TextBox7.Text) ? TextBox9.Enabled = true : TextBox9.Enabled = false; 

看它是一个string.IsNullOrEmpty(...),你可以用这个,如果你想要的,但取代你的原代码其他行也应该完美地为你工作

if (string.IsNullOrEmpty(TextBox7.Text)) 
{ 
    TextBox9.Enabled = true; 
} 
else 
{ 
    TextBox9.Enabled = false; 
} 
+0

这是错误的。正确的是'TextBox9.Enabled = string.IsNullOrWhiteSpace(TextBox7.Text);'。 –

+0

@MaxPlay只是因为它不是你的方式并不意味着它的错误,如果它的工作 –

+0

不,它不工作。至少在您尝试获得与问题中给出的代码相同的结果时不会。 'textBox1.Text.Trim())> 0'不等于'string.IsNullOrEmpty()'但'string.IsNullOrWhiteSpace()'。如果没有真正的理由,我不会纠正你。 –

0

试试这个。首先,我认为你需要首先禁用文本框9来获得你的需求。

public Form1() 
     { 
      InitializeComponent(); 
      textBox9.Enabled = false; 
     } 

     private void textBox7_TextChanged(object sender, EventArgs e) 
     { 

      if (Int32.Parse(textBox1.Text.Trim()) > 0) 
      { 
       textBox9.Enabled = true; 
      } 
      else 
      { 
       textBox9.Enabled = false; 
      } 
     } 
相关问题