检查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代码是在TextChanged事件下为所有其他相关文本框写的(1,2,3,4,10,15)。
当我在If和Else语句上放置一个断点时,它只在以下时间执行:
只有当我在textBox4中键入内容然后将其删除时,代码才适用于If语句。
只有当我输入内容然后将其删除,然后再重新输入时,它才适用于Else语句。
答案 0 :(得分:1)
您是否尝试过!string.IsNullOrEmpty(textBox4.Text.Trim())?
这应该可以帮助您删除文本框中可能仍然存在的任何空格。
答案 1 :(得分:1)
“它以某种方式检测不到textBox4是空的,没有任何反应。当我填写textBox4时,代码有效。”
所以我理解您希望运行此代码并调用“textBox4_TextChanged”方法是正确的吗?因为它看起来像只在textBox4 更改
时才会调用的事件处理程序事实上,如果语句不是问题,那么你的整个方法最初都不会被调用。
如果您在textBox4中填写某些内容然后将其删除以便更改为空,会发生什么? 我敢打赌你的代码可以正常工作。
因此,您希望正确初始化您的textBox15值:)
当你的程序启动时,只需将正确的值(当textBox4为空时)分配给textBox15 :)这可以在你的表单的构造函数中,或者当你创建textBox15时,我不知道你是如何设置的你项目的其余部分。
额外提示:使用调试器并在if语句上设置断点,您会注意到您的代码永远不会被执行直到您实际更改值textBox4。 (虽然该方法的名称也应该是一个提示;))
答案 2 :(得分:1)
如果它开始处理TextChanged事件,则表示您的textBox4
不再为空,因为您已在textBox4
中输入内容。即使你输入的只是空格,它仍然会调用textBox4_TextChanged方法。
所以我认为你不应该在textBox4_TextChanged
方法中放置textBox4检查行。
答案 3 :(得分:1)
好的,我已经通过 string.IsNullOrWhiteSpace 方法解决了我自己的问题。
"我只是想检查一个textBox是否为空,如果是,那么做一些事情,如果没有,做另外的事情。"
以下是代码的工作原理:
private void textBox4_TextChanged(object sender, TextChangedEventArgs e)
try
{
if (string.IsNullOrWhiteSpace(textBox4.Text))
{
//do something
}
}
catch
{
}
谢谢大家的帮助:)
答案 4 :(得分:0)
如果跳转到事件处理程序,Textbox4不能为null。所以我建议使用
"if (!string.isNullOrEmpty(TextBox4.Text))"
正如其他人提到的只是使用调试器。通常使用F5在Winforms中运行良好。
如果您完全确定该文本框中没有任何内容且条件仍无效,请检查您的设计器文件,如果textbox4_TextChanged REALLY已分配给TextBox4。
但我再说一遍:只需使用调试器来查看使用F10
逐步执行代码会发生什么答案 5 :(得分:0)
我不明白为什么你的
(textBox4 != null && !string.IsNullOrEmpty(textBox4.Text))
无效但是,在使用IsNullOrEmpty时,您不需要像在那里那样检查null。
尝试将您的值放入字符串,然后检查null或空。
更新:在阅读您的评论后,我认为您需要撤消if条件,
当用户输入您需要执行其他条件的内容时,因此当您在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();
}
答案 6 :(得分:0)
尝试使用验证事件。 我已经尝试了相同的,我认为根据我的意见,这很好。 保持逻辑相同,但在验证事件中编写代码。 如果我错了,请通知我。