2017-08-04 12 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

コードが正常に見える、あまりにもあなたのために完璧に動作するはずです。それはあなたがそれを動作させるために必ず次のことをしなければならないWebフォームであるので:対応するコントロールの

  • AutoPostBackプロパティが
  • trueに設定されているコントロールが
をフォーカスを失った場合にのみトリガされます
0

は、それがstring.IsNullOrEmpty(...)であるために、この

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

見てみてください、あなたが望んでいたものの場合は、これであなたの元のコードを置き換えることができますいくつかの刺激性の名前が(いくつかの命名規則に従うことを試みる)を除き、他のラインは

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; 
      } 
     } 
関連する問題