C# TextChanged中的空文本框(null;string.IsNullOrEmpty)问题

C# TextChanged中的空文本框(null;string.IsNullOrEmpty)问题,c#,string,null,windows-phone,textchanged,C#,String,Null,Windows Phone,Textchanged,我在检查文本框是否为空时遇到问题。 我在这里读了很多问题和答案,我使用了上面提到的代码,但没有运气 我只想检查一个文本框是否为空,如果为空,则执行一些操作,如果不是,则执行其他操作 到目前为止,我已经尝试了以下代码: (textBox4 != null && !string.IsNullOrEmpty(textBox4.Text)) (textBox4.Text == "") (!String.IsNullOrEmpty(textBox4.text) (textBox4.Text

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

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

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

(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语句


您是否尝试过
!string.IsNullOrEmpty(textBox4.Text.Trim())?


这将有助于删除文本框中可能仍然存在的任何空格。

您是否尝试过
!string.IsNullOrEmpty(textBox4.Text.Trim())?


这将有助于删除文本框中可能仍然存在的任何空格。

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

"if (!string.isNullOrEmpty(TextBox4.Text))"
正如其他人提到的,只需使用调试器。通常使用F5在Winforms中运行良好

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


但是我重复一遍:如果跳入事件处理程序Textbox4不能为null,只需使用调试器查看在代码中使用F10单步执行时发生的情况。所以我建议使用

"if (!string.isNullOrEmpty(TextBox4.Text))"
正如其他人提到的,只需使用调试器。通常使用F5在Winforms中运行良好

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

但我重复一遍:只需使用调试器查看在代码中使用F10单步执行时发生的情况。“它不知何故没有检测到textBox4是空的,并且什么也没有发生。当我用一些值填充textBox4时,代码工作。”

那么,我是否正确理解您希望运行此代码并调用“textBox4_TextChanged”方法?因为它看起来像一个事件处理程序,只有在textBox4发生更改时才会调用它

所以,事实上,如果语句是问题所在,那么您的整个方法最初并没有被调用

如果在textBox4中填写某个内容,然后将其删除,使其变为空,会发生什么情况? 我敢打赌你的代码在那时是有效的

因此,您希望正确初始化textBox15值:)

在程序启动时,只需将正确的值(当textBox4为空时)分配给textBox15:)这可以在表单的构造函数中,或者在创建textBox15时,我不知道您如何设置项目的其余部分

额外提示:使用调试器并在if语句上设置断点,您可能会注意到,在实际更改textBox4的值之前,代码永远不会执行。 (虽然该方法的名称也应该是一个提示;)

“它不知何故没有检测到textBox4是空的,并且什么也没有发生。当我用某个值填充textBox4时,代码会起作用。”

那么,我是否正确理解您希望运行此代码并调用“textBox4_TextChanged”方法?因为它看起来像一个事件处理程序,只有在textBox4发生更改时才会调用它

所以,事实上,如果语句是问题所在,那么您的整个方法最初并没有被调用

如果在textBox4中填写某个内容,然后将其删除,使其变为空,会发生什么情况? 我敢打赌你的代码在那时是有效的

因此,您希望正确初始化textBox15值:)

在程序启动时,只需将正确的值(当textBox4为空时)分配给textBox15:)这可以在表单的构造函数中,或者在创建textBox15时,我不知道您如何设置项目的其余部分

额外提示:使用调试器并在if语句上设置断点,您可能会注意到,在实际更改textBox4的值之前,代码永远不会执行。
(虽然该方法的名称也应该是一个提示;)

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

更新:阅读您的评论后,我认为您需要扭转您的if状况, 当用户输入需要执行其他条件的内容时,因此当您在textbox4中输入内容时,
textbox4\u TextChanged
event 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(); 
        }

我不明白你为什么这么做
(textBox4!=null&&!string.IsNullOrEmpty(textBox4.Text))
不工作,但是使用IsNullOrEmpty时,不需要像在那里那样检查null。 试着把你的价值