检查一个文本框是否为空

22

我有一个文本框,想要检查它是否为空。

哪种方法更好呢?

if(TextBox.Text.Length == 0)

或者

if(TextBox.Text == '')

?


if(TextBox.Text == "")更好,因为Text可能为null。 - M.kazem Akhgary
12
你可以这样写:if (string.IsNullOrEmpty(TextBox.Text)) - Smurfie
可能是[检查TextBox是否为空并返回MessageBox?]的重复问题(https://dev59.com/vG025IYBdhLWcg3wNC51)。 - Epicblood
8个回答

48

您应该使用String.IsNullOrEmpty()来确保字符串既不为空也不为null(不知怎么的):

if (string.IsNullOrEmpty(textBox1.Text))
{
    // Do something...
}

更多示例在此处.

为了实际目的,您可能还需要考虑使用String.IsNullOrWhitespace(),因为期望输入为空格的文本框可能会否定任何目的,除非在让用户选择自定义分隔符的情况下。


8
我认为
string.IsNullOrEmpty(TextBox.Text)

或者

string.IsNullOrWhiteSpace(TextBox.Text)

你的最佳选择。

4
我认为string.IsNullOrWhitespace可能更好,因为它符合大多数人对“空”的理解。 - Steven Rands
我同意,用户输入中预期包含几个空格并不常见。 - PiotrWolkowski
我一直在我的 C# 应用程序中使用 IsNullOrEmpty,但这是一个致命的决定,因为现在我的供应商名称有不同类型的空格,这是由于我的工人的懒惰所导致的。IsNullOrWhiteSpace 解决了所有问题。 - WhySoSerious

2
如果在XAML中,可以通过使用“Text”属性的“IsEmpty”来检查TextBox中是否有文本。实际上,它会向下传递到CollectionView.IsEmpty(而不是字符串属性)来提供答案。这是一个文本框水印的示例,在其中显示了两个文本框(一个编辑文本框和一个带有水印文本的文本框)。第二个文本框(水印文本框)的样式将绑定到主文本框上的Text,并相应地打开/关闭。
<TextBox.Style>
    <Style TargetType="TextBox">
        <Style.Triggers>
            <MultiDataTrigger>
                <MultiDataTrigger.Conditions>
                    <Condition Binding="{Binding ElementName=tEnterTextTextBox, Path=IsKeyboardFocusWithin}" Value="False" />
                    <Condition Binding="{Binding ElementName=tEnterTextTextBox, Path=Text.IsEmpty}" Value="True" />
                </MultiDataTrigger.Conditions>
                <Setter Property="Visibility" Value="Visible" />
            </MultiDataTrigger>
            <DataTrigger Binding="{Binding ElementName=tEnterTextTextBox, Path=IsKeyboardFocusWithin}" Value="True">
                <Setter Property="Visibility" Value="Hidden" />
            </DataTrigger>
            <DataTrigger Binding="{Binding ElementName=tEnterTextTextBox, Path=Text.IsEmpty}" Value="False">
                <Setter Property="Visibility" Value="Hidden" />
            </DataTrigger>
        </Style.Triggers>
    </Style>
</TextBox.Style>


1
你可以将该代码放在ButtonClick事件或任何事件中:
//Array for all or some of the TextBox on the Form
TextBox[] textBox = { txtFName, txtLName, txtBalance };

//foreach loop for check TextBox is empty
foreach (TextBox txt in textBox)
{
    if (string.IsNullOrWhiteSpace(txt.Text))
    {
        MessageBox.Show("The TextBox is empty!");
        break;
    }
}
return;

0

这里有一个简单的方法

If(txtTextBox1.Text ==“”)
{
MessageBox.Show("The TextBox is empty!");
}

0

另一种方式:

    if(textBox1.TextLength == 0)
    {
       MessageBox.Show("The texbox is empty!");
    }

-1

Farhan 的回答是最好的,我想补充一点,如果你需要同时满足这两个条件,可以添加 OR 运算符,像这样:

if (string.IsNullOrEmpty(text.Text) || string.IsNullOrWhiteSpace(text.Text))
{
  //Code
}

请注意使用 stringString 之间的区别。

-1:这是不必要的。string.IsNullOrWhiteSpace 检查了 string.IsNullOrEmpty 检查的所有内容。来自 MSDN 的说明:“String.IsNullOrWhiteSpace:指示指定的字符串是否为 null、空或仅由空格字符组成。”。此外,由于 string 是 System.String 的别名,除非它们决定以影响此问题的方式更改 String 的实现,否则它们之间没有区别。编辑:通常鼓励使用别名,但这并不意味着有区别。 - Manuel Hoffmann
这个不同,相信我!我在回复时使用了这段代码,当你添加一个非打印字符例如NCHAR(0x00A0)时,Null或空并不会抛出异常,因此你需要使用Null或空。 - Roberto Torres
1
是的,它们不同,因为一个检查空格,而另一个则不检查。但是,如果您不想允许空格,则仅使用string.isNullOrWhiteSpace进行验证就足够了,因为它还会检查null或empty。此外,我尝试了两个函数都使用'\u00A0'(不间断空格),但都没有“抛出异常”。所以我看不到您的观点。您能进一步解释吗? - Manuel Hoffmann
如果用户通过复制和粘贴添加了任何不可打印的字符,白色字符将避免空值或空格并进入数据库。 - Roberto Torres
在\u00A0的情况下,在我的测试中,它会被正确识别为 string.IsNullOrWhiteSpace 中的空格字符。您还有其他无法被识别为空格的不可打印字符的示例吗? - Manuel Hoffmann

-2

在我看来,检查文本框是否为空以及是否只包含字母的最简单方法是:

public bool isEmpty()
    {
        bool checkString = txtBox.Text.Any(char.IsDigit);

        if (txtBox.Text == string.Empty)
        {
            return false;
        }
        if (checkString == false)
        {
            return false;
        }
        return true;
    }

1
OP只是询问一个空文本框的问题。这个答案增加了一个额外的逻辑层,而这并不是被问到的。此外,从我所看到的代码中有一些错误。如果文本框为空,则IsEmpty函数返回false。如果文本框只包含'1',则IsEmpty返回true。 - Nathan Werry

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接