0

textBox が空かどうかを確認するときに問題があります。ここで多くの質問と回答を読みました。記載されているコードを使用しましたが、うまくいきませんでした。

textBox が空かどうかを確認したいだけで、空の場合は何かをし、そうでない場合は別のことをします。

これまでのところ、次のコードを試しました。

(textBox4 != null && !string.IsNullOrEmpty(textBox4.Text))
(textBox4.Text == "")
(!String.IsNullOrEmpty(textBox4.text)
(textBox4.Text != Stirng.Empty)
(textBox4.Text.Trim() == "")
(textbox4.Text.Length == 0)

エラーを示すコードはありませんが、それでも機能しません。これが私がやろうとしていることの完全なコードです:

     private void textBox4_TextChanged(object sender, TextChangedEventArgs e)
   {
    try
        {
            double a = Convert.ToDouble(textBox10.Text);                
            double c = Convert.ToDouble(textBox2.Text);
            double d = Convert.ToDouble(textBox3.Text);
            double ee = Convert.ToDouble((0.13 * d) * 2);

            if (string.IsNullOrEmpty(textBox4.Text))
            {
                textBox15.Text = Math.Round((((((ee / 2) / c) * 0.13) + (d * 0.13)), 4).ToString();
            }
            else
            {
                textBox15.Text = (((((a / 2) / c) * 0.13) + (d * 0.13)) / b).ToString(); 
            }
        }
        catch
        {
        }
    }

(textBox 3,10,15 は IsReadOnly="True" で、キーボードは InputScope="Number" です)

私は何を間違っていますか?そこにあるすべてのコードをテストしたような気がしますが、textBox4 が空かどうかをチェックしない理由がわかりません。

編集: textBox4 に何かを書き込むと、コードが機能し、textBox4 からエントリを削除すると、textBox4 が空であることを検出します (ただし、それは遅いです)。

編集 2 : textBox15 のこの同じ If/Else コードは、関連する他のすべての textBoxes (1,2,3,4,10,15) の TextChanged イベントの下に書き込まれます。

If ステートメントと Else ステートメントにブレークポイントを設定すると、次の場合にのみ実行されます。

  • このコードは、textBox4 に何かを入力して削除した場合にのみ、If ステートメントに対して機能します。

  • 何かを入力して削除し、再度入力した場合にのみ Else ステートメントで機能します。

4

7 に答える 7

1

TextChanged イベントの処理を開始した場合textBox4は、 に何かを入力したため、 が空でなくなったことを意味しますtextBox4。入力したのは空白だけですが、それでも textBox4_TextChanged メソッドが呼び出されます。

したがって、textBox4 チェック行をメソッドに入れるべきではないと思いますtextBox4_TextChanged

于 2013-11-12T16:04:52.827 に答える
1

「どういうわけか、textBox4 が空であることを検出せず、何も起こりません。textBox4 に何らかの値を入力すると、コードが機能します。」

このコードを実行し、「textBox4_TextChanged」メソッドが呼び出されることを期待していることを理解するのは正しいですか? これは、textBox4が変更されたときにのみ呼び出されるイベント ハンドラーのように見えるためです。

実際、ifステートメントが問題ではなく、メソッド全体が最初に呼び出されていません。

textBox4 に何かを入力した後、それを削除して空にするとどうなりますか? その場合、あなたのコードが機能することは間違いありません。

したがって、textBox15 値を正しく初期化する必要があります:)

プログラムの起動時に正しい値(textBox4が空の場合)をtextBox15に割り当てるだけです:)これはフォームのコンストラクターにある場合もあれば、textBox15を作成する場合もありますが、残りをどのように設定したかわかりませんあなたのプロジェクトの。

追加のヒント: デバッガーを使用して if ステートメントにブレークポイントを設定すると、実際に textBox4 の値を変更するまでコードが実行されないことに気付くでしょう。(メソッドの名前もヒントになるはずですが;))

于 2013-11-12T15:51:29.763 に答える
0

イベント ハンドラにジャンプすると、Textbox4 を null にすることはできません。だから私は使用することをお勧めします

"if (!string.isNullOrEmpty(TextBox4.Text))"

他の人が述べたように、デバッガーを使用してください。通常、F5 を使用して Winforms でうまく動作します。

そのテキストボックスに何も存在できないことが確実であり、条件がまだ機能しない場合は、デザイナーファイルをチェックして、textbox4_TextChanged が本当に TextBox4 に割り当てられているかどうかを確認してください。

しかし、繰り返します: デバッガーを使用して、F10 キーを押してコードをステップ実行して何が起こるかを確認してください。

于 2013-11-12T15:50:34.223 に答える