Validating multiple textboxes using errorprovider

后端 未结 3 1189
慢半拍i
慢半拍i 2021-02-03 15:06

I have 10 textboxes, now i want to check that none of them are empty when a button is clicked. My code is :

 if (TextBox1.Text == \"\")
 {
    errorProvider1.Se         


        
相关标签:
3条回答
  • 2021-02-03 15:20

    Yes, there is.

    First, you need to obtain all the text boxes in form of a sequence, for instance like this:

    var boxes = Controls.OfType<TextBox>(); 
    

    Then, you can iterate over them, and set the error accordingly:

    foreach (var box in boxes)
    {
        if (string.IsNullOrWhiteSpace(box.Text))
        {
            errorProvider1.SetError(box, "Please fill the required field");
        }
    }
    

    I would recommend using string.IsNullOrWhiteSpace instead of x == "" or + string.IsNullOrEmpty to mark text boxes filled with spaces, tabs and the like with an error.

    0 讨论(0)
  • 2021-02-03 15:28

    Might not be an optimal solution but this also should work

        public Form1()
        {
           InitializeComponent();
           textBox1.Validated += new EventHandler(textBox_Validated);
           textBox2.Validated += new EventHandler(textBox_Validated);
           textBox3.Validated += new EventHandler(textBox_Validated);
           ...
           textBox10.Validated += new EventHandler(textBox_Validated);
        }
    
        private void button1_Click(object sender, EventArgs e)
        {
            this.ValidateChildren();
        }
    
        public void textBox_Validated(object sender, EventArgs e)
        { 
            var tb = (TextBox)sender;
            if(string.IsNullOrEmpty(tb.Text))
            {
                errorProvider1.SetError(tb, "error");
            }
        }
    
    0 讨论(0)
  • 2021-02-03 15:36

    Edit:

    var controls = new [] { tx1, tx2. ...., txt10 };
    foreach(var control in controls.Where(e => String.IsNullOrEmpty(e.Text))
    {
        errorProvider1.SetError(control, "Please fill the required field");
    }
    
    0 讨论(0)
提交回复
热议问题