C# 如何为用户创建一个输入邮政编码的框?

C# 如何为用户创建一个输入邮政编码的框?,c#,.net,winforms,user-interface,C#,.net,Winforms,User Interface,我正在Visual Studio中使用C#创建一个windows应用程序 我想创建一个文本框,用户可以在其中输入他们的邮政编码。程序需要能够确认已输入有效条目 我是编程新手,曾经尝试过搜索谷歌,但现在我更加困惑了。你可以使用一个。只需在控件的属性中定义邮政编码模式 请注意,它本身只会检查输入是否与预期格式匹配。如果您需要检查代码是否与地址的其他部分一致(例如,以50000开头的邮政编码在明尼苏达州无效),您很可能需要使用在线服务API 编辑: 这里有点超出范围,但仍然有一点是正确的:正如Benj

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

我想创建一个文本框,用户可以在其中输入他们的邮政编码。程序需要能够确认已输入有效条目

我是编程新手,曾经尝试过搜索谷歌,但现在我更加困惑了。

你可以使用一个。只需在控件的属性中定义邮政编码模式

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

编辑:


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

这是我们以前用于验证英国邮政编码的方法。。。(注意:我们现在实际使用第三方API进行验证)

private bool IsPostCode(字符串文本)
{
var nospace=text.Replace(“,string.Empty);
if(nospace.Length<6)
{
返回false;
}
char[]chars=text.ToCharArray();
if(字符[0]<'A'| |字符[0]>'Z')
{
返回false;
}
if(字符[1]<'A'| |字符[1]>'Z')
{
返回false;
}
if(字符[2]<'0'| |字符[2]>'9')
{
返回false;
}
返回true;
}

验证邮政编码非常复杂。这在很大程度上取决于你的国家,甚至在不同的国家也有所不同。在这一点上,混淆是无法避免的-邮政编码处理起来并不有趣,我只想验证英文邮政编码。它们有两种非常相似的格式单字母,双数字,空格,单数字,双字母另一种格式是相同的,只是它以双字母开头而不是单字母。英国邮政编码的模式应该是
>L?0a 0LL
。您还应该在模型上验证邮政编码,而不仅仅是在用户界面上。@BenjaminPaul不用说,但因为问题是关于用户界面中的输入,我想应该是这样的最好保持在这个范围内。@BenjaminPaul可以放心地说这是一个家庭作业,如果应用程序是这样分层的,他会感到惊讶。“可能只是混淆了操作而不是帮助。”本贾明保罗我重新表述了这一部分。非常感谢。
        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;
        }