当用户输入整数时,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()怎么输出已赋值的参数,具体如下: