【问题标题】:How do I create a box for the user to enter their post code?如何创建一个框让用户输入他们的邮政编码?
【发布时间】:2014-04-08 13:29:53
【问题描述】:

我正在使用 C# 在 Visual Studio 中创建一个 Windows 应用程序。

我想创建一个文本框,用户将在其中输入他们的邮政编码。程序需要能够验证是否输入了有效条目。

我是编程新手,曾尝试在 Google 上搜索,但更加困惑。

【问题讨论】:

  • 验证邮政编码非常复杂。它在很大程度上取决于您所在的国家/地区,甚至在各个国家/地区也有所不同。在这一点上,混淆并不是真的可以避免的——处理邮政编码并不有趣
  • 我只想验证英文邮政编码。它们有两种非常相似的格式单字母,双数字,空格,单数字,双字母另一种格式是相同的,只是它以双字母而不是单字母开头。

标签: c# .net winforms user-interface


【解决方案1】:

这是我们之前用来验证英国邮政编码的方法...(注意:我们现在实际上使用 3rd 方 API 进行验证)

        private bool IsPostCode(string text)
        {
            var nospace = text.Replace(" ", string.Empty);
            if (nospace.Length < 6)
            {
                return false;
            }

            char[] chars = text.ToCharArray();

            if (chars[0] < 'A' || chars[0] > 'Z')
            {
                return false;
            }

            if (chars[1] < 'A' || chars[1] > 'Z')
            {
                return false;
            }

            if (chars[2] < '0' || chars[2] > '9')
            {
                return false;
            }

            return true;
        }

【讨论】:

    【解决方案2】:

    您可以为此使用MaskedTextBox。只需在控件的Mask 属性中定义邮政编码模式即可。

    请注意,它本身只会检查输入是否与预期格式匹配。如果您需要检查代码是否与地址的其他部分一致(例如,以 50000 开头的邮政编码在明尼苏达州无效),您很可能需要使用在线服务 API。

    编辑:

    这里有点超出范围,但仍然是一个有效的观点:正如 Benjamin 提到的,您需要在模型级别进行验证。将MaskedTextBox 控件视为一种简单的方法,可以帮助最终用户在提交到模型对象时实际得到验证之前输入格式正确的邮政编码。

    【讨论】:

    • UK 邮政编码的模式应该是&gt;L?0a 0LL
    • 您还应该在模型上验证邮政编码,而不仅仅是在 UI 中。
    • @BenjaminPaul 这不言而喻,但由于问题是关于 UI 中的输入,我认为最好将内容保持在该范围内。
    • @BenjaminPaul 可以肯定地说这是一项家庭作业,如果应用程序是这样分层的,会感到惊讶。可能只是让 OP 感到困惑而不是帮助。
    • @BenjaminPaul 我改写了那部分。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-16
    • 1970-01-01
    • 2017-01-27
    相关资源
    最近更新 更多