Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to fix, that TextBox accepts int

Tags:

c#

wpf

I want the input type to be int e.g. int number, instead of string and then parsing. So when I try to parse the InputNumber int.Parse(InputNumber.Text) I get error that Input string was not in a correct format.

It works but whenever I press Backspace to delete the number, my project crashes.

As I said I've tried to parse the Input as int. int.Parse(InputNumber.Text)

So if I could use int my method would be much shorter and easier to understand.

 private void InputNumber_TextChanged(object sender, TextChangedEventArgs e)
        {
            string number = InputNumber.Text;

            bool isEvenOdd = EvenOddChecker.IsEvenOdd(number);

            OutputNumber.Text = number + (isEvenOdd ? " is a even number" : " is a odd number");

            if (InputNumber.Text == string.Empty)
            {
                OutputNumber.Clear();
            }
        }
 public static bool IsEvenOdd(string number)
        {
            List<string> even = new List<string>()
            {
                "0","2","4","6","8"
            };
            foreach (var e in even)
            {
                if (number.Substring(0, number.Length - 1).ToString() == e)
                {
                    return true;
                }
            }
            return false;
        }

I expect the output 2 to be an even number, but the actual output is that's an odd number.

Or e.g. 3 should be an odd number, it says it's even.


1 Answers

You can simply code by using int.TryParse(), something like

 private void InputNumber_TextChanged(object sender, TextChangedEventArgs e)
 {

     if(int.TryParse(InputNumber.Text, out int number))
        {
            OutputNumber.Text = number + (number % 2 == 0? " is an even number" : " is an odd number");
                                        //No need to write entire function we have modulo to check even odd  

        }

        if (InputNumber.Text == string.Empty)
        {
            OutputNumber.Clear();
        }
    }
like image 200
Prasad Telkikar Avatar answered Dec 17 '25 07:12

Prasad Telkikar