为什么在字符串长度测试

时间:2016-04-15 05:20:48

标签: c# try-catch uppercase

我正在使用C#(2013)Windows Forms。当我们点击计算按钮时,我的教师希望我们确保txtStateInput是upperCase。但是当我输入一个两个字符的字符串,如“wi”,然后点击计算,它会抛出消息“输入有效状态”并清除文本框。当我第二次进入“wi”时它会起作用。我无法弄清楚为什么会发生这种情况,代码会让我相信它会检查以确保txtStateInput中的字符串是两个字符,然后当单击calculate时它将大写字符串。我无法弄清楚为什么它只有在我第二次进入“wi”状态时才有效。

       private void btnCalc_Click(object sender, EventArgs e)
        {
            //declare variables.
            int startPop = 0;
            int endPop = 0;
            string Message = "Error";
            decimal Percent = 0.0m;
            string State = "";
            string City = String.Empty;
            int dTimes = 0;

            try
            {
                City = txtCityInput.Text;

                //System Globalization was initialized  so this method works.
                TextInfo myTI = new CultureInfo("en-US", false).TextInfo;
                txtCityInput.Text = myTI.ToTitleCase(City);

                if(txtStateInput.Text.Length != 2)
                {
                    MessageBox.Show("Enter valid State");
                    txtStateInput.Focus();
                    txtStateInput.SelectAll();
                }

                else
                {
                    State = txtStateInput.Text.ToUpper();
                    txtStateInput.Text = State;

                    if ((int.TryParse(txtStartPopInput.Text, out startPop)) && int.TryParse(txtEndPopInput.Text, out endPop))
                    {
                        if ((startPop > 0) && (endPop > 0))
                        {
                            //if population has decreased.
                            if ((startPop > endPop))
                            {
                                Percent = ((decimal.Parse(endPop.ToString()) - decimal.Parse(startPop.ToString())) / decimal.Parse(startPop.ToString()));
                                Message = "Pop. Decrease of " + Percent.ToString("p");
                            }
                            //if population has increased.
                            if ((startPop < endPop))
                            {
                                Percent = ((decimal.Parse(endPop.ToString()) - decimal.Parse(startPop.ToString())) / decimal.Parse(startPop.ToString()));
                                Message = "Pop. Increase of " + Percent.ToString("p");
                            }
                            //if population has not changed.
                            if ((startPop == endPop))
                            {
                                Percent = ((decimal.Parse(endPop.ToString()) - decimal.Parse(startPop.ToString())) / decimal.Parse(startPop.ToString()));
                                Message = "No Change in Population";
                            }
                        }
                        else
                        {
                            MessageBox.Show("Please enter valid population figures.");
                        }
                    }
                if (int.TryParse(txtDisplayTimes.Text, out dTimes))
                {
                    if (dTimes > 0)
                    {
                        lstResults.Items.Clear();
                        int iSum = 0;
                        int iLoopCount = dTimes;

                        //displays the results according to value in txtDisplayTimes.
                        for (iSum = 1; iSum <= iLoopCount; iSum++)
                        {
                            lstResults.Items.Add(Message);
                        }
                    }
                }
                }
            }



            catch
            {
                MessageBox.Show("Something went wrong.");
            }

        }

0 个答案:

没有答案