关于WINFORM c# 控件数组问题

我在窗体中创建了一个控件数组CHECKBOX,并添加到了窗体的PANEL中,请问我在程序中怎么去获得窗体上添加的控件数组的CHECKED属性变化,
我在窗体上更改了CHECKBOX的CHECKED的状态,但是在程序中通过循环判断控件的状态,并不能得到CHECKBOX的Checked状态,已经勾选的控件,得到的CHECHED属性却是为FALSE,请问怎么解决。

另外,怎么通过程序,更改控件数组某一个控件的属性,例如颜色,选中状态。

遍历panel的children,取得当前的checkbox,然后再获取和赋值checked状态。
要结束checkbox的编辑状态或者让这个checkbox失去焦点,checked状态生效。

获取之后我怎么刷新它在窗体上的状态。

public partial class Form1 : Form
{
CheckBox[] _checkboxes;
bool _bLock = false;
public Form1()
{
InitializeComponent();

        _checkboxes = new CheckBox[5];

        for (int i = 0; i < _checkboxes.Length; i++ )
        {
            _checkboxes[i] = new CheckBox();
            _checkboxes[i].CheckedChanged += chk_CheckedChanged;
            this.panel1.Controls.Add(_checkboxes[i]);
            _checkboxes[i].Location = new Point(0, i*30);
        }
    }

    void chk_CheckedChanged(object sender, EventArgs e)
    {
        if (_bLock) return;

        CheckBox chk = sender as CheckBox;
        if(chk.Checked)
        {
            // 更改状态
            // 举例
            chk.BackColor = Color.Red;
            chk.Text = "test";
            // 如果在这里修改Checked状态,需要加锁,下面代码只适用于单线程
            _bLock = true;
            chk.Checked = !chk.Checked;
            _bLock = false;
        }
    }
}