【问题标题】:Win Forms text box masksWinforms 文本框掩码
【发布时间】:2011-01-16 14:54:03
【问题描述】:

如何将掩码放在 win 表单文本框上,以便它只允许数字? 以及它如何适用于其他掩码数据、电话 zip 等。

我正在使用 Visual Studio 2008 C#

谢谢。

【问题讨论】:

    标签: c# winforms textbox mask


    【解决方案1】:

    【讨论】:

      【解决方案2】:

      您想阻止不允许的输入还是在可以继续之前验证输入?

      前者可能会使用户在按键时感到困惑,但没有任何反应。通常最好显示他们的按键但显示输入当前无效的警告。例如,设置屏蔽电子邮件地址正则表达式可能也相当复杂。

      查看ErrorProvider 以允许用户键入他们想要的内容,但在键入时显示警告。

      对于仅允许数字的文本框的第一个建议,您可能还需要考虑NumericUpDown

      【讨论】:

      • 一个设计合理的用户界面应该不会让人混淆为什么没有输入他们的文本。我在一个开发团队中,为以前从未使用过计算机的人开发医疗计费软件,甚至他们也知道为什么字母不会进入 SSN 或保险 ID 号码字段。
      • 大多数情况下我会使用输入验证,有时在 SSN 和按 id 搜索等情况下进行预防。
      【解决方案3】:

      如上所述,使用MaskedTextBox

      也值得使用ErrorProvider

      【讨论】:

        【解决方案4】:

        使用掩码文本框并分配 MasktextboxId.Mask。

        如果你想使用文本框,那么你必须为其编写正则表达式

        【讨论】:

          【解决方案5】:

          控制用户的按键事件,通过不允许任何不需要的字符来屏蔽输入。

          只允许带小数的数字:

          private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
              {
                  // allows 0-9, backspace, and decimal
                  if (((e.KeyChar < 48 || e.KeyChar > 57) && e.KeyChar != 8 && e.KeyChar != 46))
                  {
                      e.Handled = true;
                      return;
                  }
          
                  // checks to make sure only 1 decimal is allowed
                  if (e.KeyChar == 46)
                  {
                      if ((sender as TextBox).Text.IndexOf(e.KeyChar) != -1)
                          e.Handled = true;
                  }
              }
          

          只允许电话号码值:

          private void txtPhone_KeyPress(object sender, KeyPressEventArgs e)
          {
               if (e.KeyChar >= '0' && e.KeyChar <= '9') return;
               if (e.KeyChar == '+' || e.KeyChar == '-') return;
               if (e.KeyChar == 8) return;
               e.Handled = true;
          
          }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2019-01-28
            • 1970-01-01
            • 1970-01-01
            • 2011-03-21
            • 1970-01-01
            • 2014-06-11
            • 1970-01-01
            相关资源
            最近更新 更多