簡體   English   中英

如何檢查多個組合框的值是否為空

[英]How to check multiple combo-box value is Empty or Not

我的win-form應用程序中有40個組合框,我想在按鈕單擊結束時檢查是否已輸入所有組合框值,即沒有選擇任何組合框值

我正在嘗試下面的代碼用於每個循環,但找不到成功

foreach (Control c in this.Controls)
{
      if (c is ComboBox)
      {
           ComboBox textBox = c as ComboBox;
           if (textBox.SelectedValue==string.Empty)
           {
               MessageBox.Show("please fill all fields");
           }
      }
}

那么如何用簡單的代碼行來實現這種驗證

嘗試使用linq和遞歸:

var isAnyEmpty = ScanForControls<ComboBox>(this)
   .Where(x => x.SelectedIndex < 0)
   .Any();

if (isAnyEmpty)
    MessageBox.Show("please fill all fields");

和遞歸搜索:

public IEnumerable<T> ScanForControls<T>(Control parent) where T : Control
{
    if (parent is T)
        yield return (T)parent;

    foreach (Control child in parent.Controls)
    {
        foreach (var child2 in ScanForControls<T>(child))
            yield return (T)child2;
    }
}

為確保檢查表單中的每個ComboBox,您必須遍歷Form中的每個控件,為此請嘗試一下。

private void button1_Click(object sender, EventArgs e)
{
   foreach (Control c in this.Controls)
   {
      if (c is ComboBox)
      {
         ComboBox textBox = c as ComboBox;
         if (textBox.SelectedValue == null)
         {
            MessageBox.Show("please fill all fields");
            break;
         }
       }
       else
          recursiveComboboxValidator(c);
    }
}

void recursiveComboboxValidator(Control cntrl)
{
    foreach (Control c in cntrl.Controls)
    {
       if (c is ComboBox)
       {
           ComboBox textBox = c as ComboBox;
           if (textBox.SelectedValue == null)
           {
                MessageBox.Show("please fill all fields");
                break;
           }
        }
        else
            recursiveComboboxValidator(c);
     }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM