如何从用户输入检查MaskedTextBox是否为空?

时间:2013-07-20 01:03:24

标签: c# validation string maskedtextbox

我正在使用MaskedTextBox,其中包含以下短日期Mask:“00/00/0000”。
我的问题是我想知道控件何时为空:

if (string.IsNullOrEmpty(maskedTextBox1.Text))
{
    DataTable dt = function.ViewOrders(Functions.GetEid);
    dataGridView2.DataSource = dt;
}

它不起作用,当maskedTextBox1看起来为空(我确定它是)时,if语句未检测到它是nullEmpty

9 个答案:

答案 0 :(得分:18)

您可以简单地使用:

maskedTextBox1.MaskCompleted

或者

maskedTextBox1.MaskFull

用于检查用户是否输入了完整掩码输入的属性。

答案 1 :(得分:2)

我知道这是旧的,但我会首先删除掩码,然后像普通文本框一样检查文本。

maskedTextBox.TextMaskFormat = MaskFormat.ExcludePromptAndLiterals;

//...Perform normal textbox validation

答案 2 :(得分:2)

我刚遇到这个问题。我需要Masked Value,但如果用户没有在一个步骤中引入任何数据,也需要发送空字符串。

我发现了这个属性 MaskedTextProvider.ToDisplayString所以我使用MaskedTextbox:

maskedTextBox.TextMaskFormat = MaskFormat.ExcludePromptAndLiterals;

但我总是阅读以下文字:

maskedTextBox.MaskedTextProvider.ToDisplayString() 

这样,如果用户没有在控件中引入文本Text属性将为空:

maskedTextBox.Text == string.Empty

当您检测到字符串不为空时,您可以使用包含文字的全文,例如:

DoSomething((maskedTextBox.Text == string.Empty) ? maskedTextBox.Text: maskedTextBox.MaskedTextProvider.ToDisplayString());

DoSomething((maskedTextBox.Text == string.Empty) ? string.Empty: maskedTextBox.MaskedTextProvider.ToDisplayString());

答案 3 :(得分:1)

你试过修剪吗?

if(string.IsNullOrEmpty(maskedTextBox.Text.Trim())

答案 4 :(得分:1)

如果设置属性maskedTextBox.TextMaskFormat = MaskFormat.ExcludePromptAndLiterals,则TypeValidationCompleted事件验证将不起作用。要测试短日期maskedtextbox是否为空,您可以使用:

        if (maskedTextBox1.Text == "  /  /")
        {
            ...;
        }

答案 5 :(得分:0)

你想用if语句完成什么逻辑?正如你所知,你说的是: 如果文本框为空,请将datagridview2 +的源设置为ViewOrder数据。我不确定你想做什么,但我想如果你有约会我想要加载信息。解决这个问题,你要做的就是添加!在if语句中,如果文本框中有文本,则运行代码。

if( !(string.IsNullOrEmpty(maskedTextBox2.Text)))

答案 6 :(得分:0)

如果Telerik屏蔽了没有MaskCompleted或MaskFull的文本框,那么这将是一个棘手的解决方案:

面具总是包含这样的字符:"_"我们检查屏蔽文本框:

if (textbox1.Text.Contains("_"))
        {
            MessageBox.Show("Please enter the correct numbers!","Error",MessageBoxButtons.OK,MessageBoxIcon.Stop);
            return;
        }

如果文本框已满,则它不包含"_"

答案 7 :(得分:0)

我认为使用掩码“00/00/0000”的 MaskedTextBox (MTB) 是用于测试其空性的错误字符串。这是因为 MTB 不像普通的文本框,必须使用短日期掩码来确定其字符串值。 假设您的表单上有一个 MTB 名称 mskDateOfBirth。为了测试它的空性,需要像下面这样的语句

if (mskDateOfBirth.MaskedTextProvider.ToDisplayString() == "__/__/____")
{
    // Do something when true
}   
else
{
    // Do something when false          
}

我已使用 Visual Studio 2019 对此进行了测试,效果很好。希望这会有所帮助。

答案 8 :(得分:-1)

如果空值为“//”,则为其声明一个常量:

const string EmptyDateInput = "  /  /";

然后你可以反复使用它来比较:

if (maskedTextBox1.Text == EmptyDateInput)
{
}