user3693090
user3693090

Reputation:

C# TextBox to int() not working when no value is entered

I have just started programming in C#. I am trying to convert a string to int. Like this:

int.Parse(textBox1.Text);

This is working fine when I enter a value but this is giving me exception when nothing is entered and I press the button. What should I do? Is there a function to solve this? Thanks

Upvotes: 3

Views: 645

Answers (5)

unSatisfied
unSatisfied

Reputation: 1

Put this following code under your button event. It will make sure that the text/numbers entered into the textbox are able to be converted into an integer. Also, it will make sure that the textbox has numbers/text entered.

if (textBox1.Text != "")
{
    try
    {
        Convert.ToInt32(textBox1.Text);
    }
    catch
    {
        /*
        Characters were entered, thus the textbox's text cannon be converted into an integer.
        Also, you can include this line of code to notify the user why the text is not being converted into a integer:
        MessageBox.Show("Please enter only numbers in the textbox!", "PROGRAM NAME", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); 
        */
    }
}
/*
else
{
    MessageBox.Show("Please enter numbers in the textbox!", "PROGRAM NAME", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);     
}
*/

Upvotes: 0

Syed Farjad Zia Zaidi
Syed Farjad Zia Zaidi

Reputation: 3360

This is simple. You can do this on your button click event:

int number;
if (int.TryParse(textbox1.Text, out number))
{
    // number is an int converted from string in textbox1.
    // your code
}
else
{
    //show error output to the user
}

Upvotes: -1

Mitesh
Mitesh

Reputation: 108

    Try below given solution

    <script type="text/javascript">

    function myFunction() {
                alert('Please enter textbox value.');
            }

     </script>

    And in the button click event use below given logic.

    if (TextBox1.Text == "")
    {
       //Call javascript function using server side code.
ClientScript.RegisterStartupScript(this.GetType(), "CallMyFunction", "myFunction()", true);
    }
    else
    {
       int value;
       value = int.Parse(TextBox1.Text);
     }

Upvotes: -1

RacerNerd
RacerNerd

Reputation: 1579

One way to approach this is by using int.tryParse() instead of just int.Parse(). You can then check the result to see if the input was in the correct format. Here is a sample:

int userInput;
if(!int.TryParse(textBox1.Text, out userInput))
{
   //error in input here
}

After executing, if int.TryParse() returns true, then you will have a valid value in the userInput variable.

Alternatively you can wrap it in a try-catch, but it is better to attempt the parse and handle it without exceptions if possible.

Upvotes: 0

Selman Gen&#231;
Selman Gen&#231;

Reputation: 101681

Use int.TryParse instead, it doesn't throw exception if the parsing fails.

Converts the string representation of a number to its 32-bit signed integer equivalent. A return value indicates whether the conversion succeeded.

int number;
bool isValid = int.TryParse(textBox1.Text, out number);

if(isValid)
{
   // parsing was successful
}

Upvotes: 5

Related Questions