如何获取动态添加到Windows窗体c#中的控件的值?

Fer*_*nal 7 c# checkbox combobox winforms windows-controls

我读了一些文章并且没有管理解决了我的问题,我的问题是在我尝试获取动态添加到Windows窗体中的控件(CheckBox和ComboBox)的值时,我需要知道何时选中CheckBox(或取消选中) )当按下按钮时,如果ComboBox为空(或不是),则此按钮调用一种方法,在该方法中我验证所有组件是否为空,我按以下方式添加控件:

 CheckBox box;
 ComboBox cmBox;
 for (int i = 1; i <= sumOfRegisters; i++)
 {
    box = new CheckBox();
    box.Name = "CheckBox" + i;
    box.Text = "Some text";
    box.AutoSize = true;
    box.Location = new Point(10, i * 25); //vertical

    cmBox = new ComboBox();
    cmBox.Name = "ComboBox" + i;
    cmBox.Size = new System.Drawing.Size(302, 21);
    cmBox.TabIndex = i;
    cmBox.Text = "Some Text";
    cmBox.Location = new Point(270, i * 25);

    this.groupBox.Controls.Add(cmBox);
    this.groupBox.Controls.Add(box);
}
Run Code Online (Sandbox Code Playgroud)

"我在ComboBox的情况下添加数据库中的值,我省略了这一部分."

我尝试用foreach获取值:

foreach (Control ctrl in groupBox.Controls)
Run Code Online (Sandbox Code Playgroud)

问题是我不知道如何检查Control(CheckBox和ComboBox)是否被检查或为空(视情况而定).

非常感谢您的帮助,感谢您的时间.

cho*_*mba 2

您可以使用as运算符,如下所示:

foreach (Control ctrl in groupBox.Controls)
{
    CheckBox checkBox = ctrl as CheckBox;
    ComboBox comboBox = ctrl as ComboBox;

    if (checkBox != null)   // Control is a CheckBox
    {
        if (checkBox.Checked)
        {
            // CheckBox is checked
        }
        else
        {
            // CheckBox is not checked
        }
    } 
    else if (comboBox != null)  // Control is a ComboBox
    {
        if (comboBox.Items.Count == 0)
        {
            // ComboBox is empty
        } 
        else
        {
            // ComboBox isn't empty
        }
    }
}
Run Code Online (Sandbox Code Playgroud)