【问题标题】:How to check if a MaskedTextBox is empty from a user input?如何检查用户输入的 MaskedTextBox 是否为空?
【发布时间】:2013-07-20 01:03:24
【问题描述】:

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

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

它不起作用,当maskedTextBox1 看起来是空的(我确定确实如此)时,if 语句不会检测到它是nullEmpty

【问题讨论】:

    标签: c# string winforms validation maskedtextbox


    【解决方案1】:

    你可以简单地使用:

    maskedTextBox1.MaskCompleted
    

    或者

    maskedTextBox1.MaskFull
    

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

    【讨论】:

    • 如果我想检查用户是否输入了任何内容,即使是一个字符,该怎么办?
    • 我无法回答您的问题。您可以通过maskedTextBox1.Text 获取文本框的文本,因此您将获得用户在其中写入的任何内容。
    • 这实际上并没有回答这个问题。这是“如何知道控件是否为空”。最好的方法是像@user3219570的答案一样删除掩码
    【解决方案2】:

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

    maskedTextBox.TextMaskFormat = MaskFormat.ExcludePromptAndLiterals;
    
    //...Perform normal textbox validation
    

    【讨论】:

      【解决方案3】:

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

      我发现了该物业 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());
      

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

          【解决方案5】:

          你试过修剪吗?

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

          【讨论】:

            【解决方案6】:

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

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

            【讨论】:

            • 我想做 if 语句,如果蒙面文本框为空,则执行其他操作,顺便说一下,蒙面文本框有一个掩码 =“00/00/0000”(短日期)
            • @MuhammedSalah Empty 是什么意思?你的意思是Emptytextbox 应该只有mask 但用户输入value
            • @Shaharyar 是的,这正是我所需要的 :)
            • 我面前没有我的电脑可以尝试,但请查看 MaskedTextBox 的 MaskComplete 和 MaskFull 属性。 MaskCompleted 仅检查所需的输入元素。要确定是否已填写所有必需和可选输入元素,请改用 MaskFull 属性。
            【解决方案7】:

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

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

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

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

            【讨论】:

              【解决方案8】:

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

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

              我已经使用 Visual Studio 2019 对此进行了测试,它运行良好。希望这会有所帮助。

              【讨论】:

              • 由于某种原因,Stackflow 文字处理正在压缩下划线。掩码应该看起来像“__/__/____”
              • 答案字段接受标记;使用 标签或字段上方的格式化按钮来格式化代码。
              • 顺便说一下,如果用户使用非标准的系统级日期格式,这可能会失败。例如,我的机器设置为yyyy-MM-dd 格式,其掩码为____-__-__,这会导致条件检查失败(即使它是空的)。
              【解决方案9】:

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

              const string EmptyDateInput = "  /  /";
              

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

              if (maskedTextBox1.Text == EmptyDateInput)
              {
              }
              

              【讨论】:

                猜你喜欢
                • 2020-09-20
                • 2018-05-26
                • 2021-09-14
                • 1970-01-01
                • 2019-05-23
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多