如何确保Winform文本框输入以特定数字开头?

时间:2018-07-09 13:06:37

标签: c# visual-studio winforms input textbox

我想确保用户文本框输入以71或72开头并且由10位数字组成。否则给出错误信息。我该怎么办?

我正在使用Visual Studio 2015。

4 个答案:

答案 0 :(得分:1)

好吧,您并没有真正告诉我们您尝试过的事情或没有给我们任何限制,所以我将给出一个非常通用的答案:

public class Program
    {
        public static void Main(string[] args)
        {
            string myInput = "";
            textBox1.Text.Trim();
            if(textBox1.Text.Length() == 10)
            {
                if(textBox1.Text[0] == '7')
                {
                    if(textBox1.Text[1] == '1' || textBox1.Text[1] == '2')
                    {
                        myInput == textBox1.Text();
                        int num = Int32.Parse(myInput);
                        //num is now an int that is 10 digits and starts with "71" or "72"
                    }
                }
            }
            else
            {
               MessageBox.Show("Invalid input", "Invalid Input");
            }          
        }
    }

此外,您可能可以将所有if语句合并为一个大语句。这样可以使其与else语句更好地进行交互。

答案 1 :(得分:1)

 if ((TextBox.Text().StartsWith("71") || TextBox.Text().StarsWith("72")) && (TextBox.Text().Length == 10))
 {

 }
 else
 {


 }

答案 2 :(得分:0)

正则表达式如何:

(71|72)\d{8}

基本上,它以71或72开头,后跟8个数字。

如果此代码匹配,它将返回一个布尔值

System.Text.RegularExpressions.Regex.IsMatch(textBox1.Text, "(71|72)\d{8}")

参考:

https://msdn.microsoft.com/en-us/library/sdx2bds0(v=vs.110).aspx

答案 3 :(得分:0)

如果您有大量的文本框,则下面的代码将为您工作。

        var boxes = new List<TextBox>
    {
         textBox1,
         textBox2,
         textBox3
    };

    if ((!boxes.Any(x => x.Text.StartsWith("71")) || !boxes.Any(x => x.Text.StartsWith("72"))) && !boxes.Any(x => x.Text.StartsWith("100")))
    {
        // Code
    }
    else
    {
        // Error
    }