简体   繁体   中英

C# - TextBox Validation

I have some code that checks and makes sure that when the users enters in the field an integer from 1 - 10 has to be input.

Although if the users takes focus of the field, the "bad" data (such as "fdgfdg") is still left in the field. So could some demonstrate how when focus is lost on the field, if the data is not valid, a default value will be entered instead eg 5

private void textBox4_TextChanged(object sender, EventArgs e)
        {
            try
            {
                int numberEntered = int.Parse(textBox4.Text);
                if (numberEntered < 1 || numberEntered > 10)
                {
                    MessageBox.Show("You must enter a number between 1 and 10");
                }
            }
            catch (FormatException)
            {

                MessageBox.Show("You need to enter an integer");
            }
        }

There are several events that you can use here, Leave , LostFocus and Validating there is more discussion of these various events on MSDN here .

Under certain scenarios the Leave and the LostFocus will not fire so the best to use in your case is the Validating event:

    textBox1.Validating += new CancelEventHandler(textBox1_Validating);


    void textBox1_Validating(object sender, CancelEventArgs e)
    {
        int numberEntered;

        if (int.TryParse(textBox1.Text, out numberEntered))
        {
            if  (numberEntered < 1 || numberEntered > 10) 
            { 
                MessageBox.Show("You have to enter a number between 1 and 10");
                textBox1.Text = 5.ToString();
            }
        }
        else
        {
            MessageBox.Show("You need to enter an integer");
            textBox1.Text = 5.ToString();
        }
    }

看看这里 ,我会使用TryParse

if you are hand-rolling validation like you do here, all you need to do is to set the default value after you MessageBox.Show()

in standard winforms I don't think you have any framework support for validation, but you could look at this: http://msdn.microsoft.com/en-us/library/ms951078.aspx for inspiration so you don't scatter this logic throughout your app

使用文本框控件上的Leave事件来验证并设置默认值

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM