0

检查文本框是否为空时出现问题。我在这里阅读了很多问题和答案,并且我使用了提到的代码但没有运气。

我只想检查一个文本框是否为空,如果是,则执行某些操作,如果不是,请执行其他操作。

到目前为止,我已经尝试了以下代码:

(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
        {
        }
    }

(文本框 3、10、15 是 IsReadOnly="True",键盘是 InputScope="Number",如果重要的话)

我究竟做错了什么?我觉得我已经测试了所有的代码,我不明白为什么它不检查 textBox4 是否为空。

编辑:当我在 textBox4 中写东西时,代码有效,当我从 textBox4 中删除条目时,它检测到 textBox4 为空(但已经晚了)

编辑 2:textBox15 的相同 If/Else 代码写在所有其他涉及的文本框(1、2、3、4、10、15)的 TextChanged 事件下。

当我在 If 和 Else 语句上放置断点时,它仅在以下情况下执行:

  • 仅当我在 textBox4 中键入内容然后将其删除时,该代码才适用于 If 语句。

  • 仅当我键入某些内容,然后将其删除,然后再次重新键入时,它才适用于 Else 语句。

4

7 回答 7

1

你试过了吗!string.IsNullOrEmpty(textBox4.Text.Trim())?

这应该可以帮助您删除可能仍留在文本框中的任何空格。

于 2013-11-12T15:48:23.747 回答
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 回答
1

好的,我已经通过使用string.IsNullOrWhiteSpace方法解决了我自己的问题。

“我只是想检查一个文本框是否为空,如果是,则执行某些操作,如果不是,请执行其他操作。”

以下是代码的工作方式:

  private void textBox4_TextChanged(object sender, TextChangedEventArgs e)

try
        {
            if (string.IsNullOrWhiteSpace(textBox4.Text))
            {
                //do something
            }
        }

        catch
        {
        }

谢谢大家帮助我:)

于 2015-05-26T13:21:20.840 回答
0

但是,我不明白为什么您 (textBox4 != null && !string.IsNullOrEmpty(textBox4.Text)) 不工作,但是在使用 IsNullOrEmpty 时,您不需要像在那里那样检查 null 。尝试将您的值放入字符串,然后检查 null 或空。

更新:阅读您的评论后,我认为您需要反转您的 if 条件,当用户输入您需要执行 else 条件的内容时,因此当您在 textbox4 中输入内容时,textBox4_TextChanged事件 textbox4 不为空,所以您只需要检查您的业务逻辑或改变你的条件。

string strtxt4 = Convert.toString(textBox4.text);

if (string.IsNullOrEmpty(strtxt4 ))
        {
            textBox15.Text = Math.Round(((((((ee / b) + c) * b) * 0.0025) + (d * 0.0025)) / b), 4).ToString();
        }
        else
        {
            textBox15.Text = ((((((a / b) + c) * b) * 0.0025) + (d * 0.0025)) / b).ToString(); 
        }
于 2013-11-12T15:59:34.563 回答
0

尝试验证事件。我已经尝试过同样的方法,我认为根据我的观点效果很好。保持逻辑相同,但在验证事件中编写代码。如果我错了,请告诉我。

于 2014-02-28T10:54:25.140 回答
0

如果您跳入事件处理程序 Textbox4 不能为空。所以我建议使用

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

正如其他人提到的,只需使用调试器。通常在使用 F5 的 Winforms 中效果很好。

如果您绝对确定该文本框中没有任何内容并且条件仍然不起作用,请检查您的设计器文件是否将 textbox4_TextChanged 真正分配给 TextBox4。

但我重复一遍:只需使用调试器查看使用 F10 单步执行代码时会发生什么

于 2013-11-12T15:50:34.223 回答