Этот код должен выполнить трюк, как было предложено Дмитрием Быченко.
var lstChckBox = new List<CheckBox>( );
for (int i = 0; i < appointments.TotalCount; i++)
{
box = new CheckBox( );
box.Tag = i;
box.Text = appointments.Items[i].Subject;
box.AutoSize = true;
box.Location = new Point( KalenderLbl.Location.X, KalenderLbl.Location.Y + KalenderLbl.Height + 5 + ( i * 25 ) );
lstChckBox.Add( box );
box.CheckedChanged += new EventHandler( chck_CheckedChanged );
Controls.Add( box );
}
void chck_CheckedChanged( object sender, EventArgs e )
{
foreach (CheckBox item in lstChckBox)
{
if (item.Checked == true)
{
Hide( );
}
}
}
Я бы также предложил сократить и упростить части вашего кода, например.
var lstChckBox = new List<CheckBox>( );
var InitialYPosition = KalenderLbl.Location.Y + KalenderLbl.Height + 5;
for (int i = 0; i < appointments.TotalCount; i++)
{
box = new CheckBox( ) {
Tag = i,
Text = appointments.Items[i].Subject,
AutoSize = true,
Location = new Point( KalenderLbl.Location.X, InitialYPosition + ( i * 25 ) )
};
lstChckBox.Add( box );
box.CheckedChanged += new EventHandler( chck_CheckedChanged );
Controls.Add( box );
}
Минимизациякод и избегая использования box.Property для установки некоторых данных, которые будут установлены тем не менее.