2017-08-04 67 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; 
      } 
     }