Related to Arsen's answer, if you are comfortable with creating the Checkboxes programmatically, you can create them inside a loop. Then you can reuse a lot of code since the checkboxes are almost identical.
In the form load you could add:
for (int i = 1; i <= 10; i++)
{
var checkbox = new CheckBox();
checkbox.Name = String.Format("checkbox{0}", i);
//Set the location. Notice the y-offset grows 20px with each i
checkbox.Location = new Point(50, 150 + (i*20));
checkbox.Text = "1";
checkbox.Checked = false;
//Assign them all the same event handler
checkbox.CheckedChanged += new EventHandler(checkbox_CheckedChanged);
//other checkbox considerations like checkbox.BringToFront()
//very important, you must add the checkbox the the form's controls
this.Controls.Add(checkbox);
}
And you would just have to define your event handler. Maybe something like this:
private void checkbox_CheckedChanged(object sender, EventArgs e)
{
var checkBox = (CheckBox) sender;
//no need to check bools against true or false, they evaluate themselves
if (checkBox.Checked)
{
checkBox.Text = "B";
checkBox.BackColor = Color.Green;
}
else
{
checkBox.Text = "1";
checkBox.BackColor = SystemColors.Control;
}
}