当用户输入整数时,MessageBox.Show 不会出现

Posted

技术标签:

【中文标题】当用户输入整数时,MessageBox.Show 不会出现【英文标题】:MessageBox.Show wont appear when user inputs integers 【发布时间】:2021-06-24 02:15:22 【问题描述】:

我正在为学校制作一个基本程序,并且有一个文本框,用户可以在其中输入他们的邮政编码,并且该程序应该显示一个消息框,说明根据输入的邮政编码将花费多少运费。但是当我尝试实现此代码时,在文本框中输入我的文本并按下提交按钮,消息框不会显示。但另一方面,当我让程序显示一个文本框时,当有任何不是整数时它会正常工作,例如:

                if (textBox1.Text.TrimStart() == string.Empty)
                    MessageBox.Show("A postal code is required");

可以正常工作,显示消息框等等

                if (textBox1.Text == "test")
                    MessageBox.Show("working");

但是如果涉及到任何整数,程序将什么也不做,甚至不会给出任何错误,这使得这个问题难以解决。比如这样:

                if (textBox1.Text == postcode2string)
                    MessageBox.Show("The cost of shipping is $15");

我曾尝试将大括号中的代码分开,而不是像这样将所有代码分开:

            
                if (textBox1.Text == postcode1string)
                    MessageBox.Show("The shipping cost is $25");
            
            
                if (textBox1.Text == postcode2string)
                    MessageBox.Show("The cost of shipping is $15");
            
            
                if (textBox1.Text.TrimStart() == string.Empty)
                    MessageBox.Show("A postal code is required");
            
            
                if (textBox1.Text == "test")
                    MessageBox.Show("working");
            

但同样的问题仍然存在,我也尝试过使用 else 语句,就像这样

            if (textBox1.Text.TrimStart() == string.Empty)
            
                MessageBox.Show("A postal code is required");
            
            else
            
                textBox1.Text == postcode1string);
                MessageBox.Show("The shipping cost is $25");
            

但这也根本不起作用,我什至将我的整数转换成这样的字符串:

            int postcode1 = 0 - 999;
            int postcode2 = 1000 - 1999;
            int postcode3 = 2000 - 2999;
            int postcode4 = 3000 - 3999;
            int postcode5 = 4000 - 4999;
            int postcode6 = 5000 - 5999;
            int postcode7 = 6000 - 6999;
            int postcode8 = 7000 - 7999;
            string postcode1string = postcode1.ToString();
            string postcode2string = postcode2.ToString();
            string postcode3string = postcode3.ToString();
            string postcode4string = postcode4.ToString();
            string postcode5string = postcode5.ToString();
            string postcode6string = postcode6.ToString();
            string postcode7string = postcode7.ToString();
            string postcode8string = postcode8.ToString();

您也可以猜到,但仍然不起作用。我所有的问题都没有出错,什么也没有发生。我真的迷路了。 该程序的完整代码是:

        private void button1_Click(object sender, EventArgs e)
        
            int postcode1 = 0 - 999;
            int postcode2 = 1000 - 1999;
            int postcode3 = 2000 - 2999;
            int postcode4 = 3000 - 3999;
            int postcode5 = 4000 - 4999;
            int postcode6 = 5000 - 5999;
            int postcode7 = 6000 - 6999;
            int postcode8 = 7000 - 7999;
            string postcode1string = postcode1.ToString();
            string postcode2string = postcode2.ToString();
            string postcode3string = postcode3.ToString();
            string postcode4string = postcode4.ToString();
            string postcode5string = postcode5.ToString();
            string postcode6string = postcode6.ToString();
            string postcode7string = postcode7.ToString();
            string postcode8string = postcode8.ToString();

            if (textBox1.Text.TrimStart() == string.Empty)
                MessageBox.Show("A postal code is required");
            if (textBox1.Text == postcode1string)
                MessageBox.Show("The shipping cost is $25");
            if (textBox1.Text == postcode2string)
                MessageBox.Show("The cost of shipping is $15");
        

【问题讨论】:

您所有的邮政编码都以“-999”结尾。我不认为那是你真正想要的。 使用 c#9 模式(并省略了一些虚拟值/案例):var shipCost = int.Parse(textBox1.Text) switch < 1000 => 25, < 2000 => 15, < 3000 => 10, _ => 0 ; MessageBox.Show($"Shipping cost is shipCost:C0"); 或类似的东西。虽然将邮政编码视为整数很奇怪 【参考方案1】:

你不能这样声明你的整数。你真正做的是第一个 int Postcode1 等于 0 减去 999。所以它是 -999,当你试图说如果例如邮政编码 555 等于 int 它不会因为 555 =! 999.

一种方法是在 if 语句中,你需要做两个条件。如果它大于 0 且小于 999。您还可以为文本框文本声明一个变量,该变量将为和 int,然后在 if 语句中进行比较。像这样:

        try
            int postalcode = int.Parse(textBox1.Text);
        
        catch
            MessageBox.Show("Please provide a number")
        
        
        
        if (postalcode > 0 && postalcode < 999)
            MessageBox.Show("The shipping cost is $25");
        if (postalcode > 1000 && postalcode < 1999)
            MessageBox.Show("The cost of shipping is $15");

【讨论】:

以上是关于当用户输入整数时,MessageBox.Show 不会出现的主要内容,如果未能解决你的问题,请参考以下文章

c#中messagebox.show如何实现显示信息换行!求大虾们 速回 急用!!

C#问题,MessageBox.Show()怎么输出已赋值的参数,具体如下:

C# winform webbrowser 自动登录网站?

当我输入一个字母时,我的函数可以工作,但是当我输入一个整数时它不会

关于c# MessageBox.Show错误 高手指点下

没有重新启动程序和输入整数不起作用