6

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

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

它不起作用,当maskedTextBox1看起来是空的(我确定它是)时,该if语句没有检测到它是nullor Empty

4

9 回答 9

24

您可以简单地使用:

maskedTextBox1.MaskCompleted

或者

maskedTextBox1.MaskFull

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

于 2013-07-20T01:57:00.053 回答
3

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

maskedTextBox.TextMaskFormat = MaskFormat.ExcludePromptAndLiterals;

//...Perform normal textbox validation
于 2014-04-16T12:40:45.040 回答
2

我刚遇到这个问题。我需要屏蔽值,但如果用户没有一步引入任何数据,我还需要发送空字符串。

我发现了属性 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());
于 2015-09-29T23:42:56.357 回答
2

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

        if (maskedTextBox1.Text == "  /  /")
        {
            ...;
        }
于 2016-10-28T10:29:08.310 回答
1

你试过修剪吗?

if(string.IsNullOrEmpty(maskedTextBox.Text.Trim())
于 2013-07-20T02:35:57.310 回答
0

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

if( !(string.IsNullOrEmpty(maskedTextBox2.Text)))
于 2013-07-20T01:18:24.830 回答
0

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

掩码始终包含这样的字符:"_"我们通过以下方式检查掩码文本框:

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

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

于 2016-01-16T11:29:41.890 回答
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 对此进行了测试,它运行良好。希望这会有所帮助。

于 2021-01-02T21:56:09.410 回答
-1

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

const string EmptyDateInput = "  /  /";

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

if (maskedTextBox1.Text == EmptyDateInput)
{
}
于 2021-06-21T18:49:35.307 回答