C# 在winform c中动态添加复选框检查事件#

C# 在winform c中动态添加复选框检查事件#,c#,checkbox,C#,Checkbox,我在表单上动态添加了checkboxex。选中复选框后,我想执行一些操作。下面是我使用的代码 private void GenerateSidePanelControls() { try { int topPosition = 15; foreach (SideMenuItem sItem in _sideMenuItemList) { CheckBo

我在表单上动态添加了checkboxex。选中复选框后,我想执行一些操作。下面是我使用的代码

 private void GenerateSidePanelControls()
    {
        try
        {
            int topPosition = 15;
            foreach (SideMenuItem sItem in _sideMenuItemList)
            {
                CheckBox objLabel = new CheckBox();
                objLabel.Name = sItem.TagName;
                objLabel.Text = sItem.TagName;
                objLabel.Left = 15;
                objLabel.Top = topPosition;
                objLabel.Font = _normalFont;
                sidePanel.Controls.Add(objLabel);
                topPosition += 35;

                objLabel.CheckedChanged += new System.EventHandler(this.SideLabel_Click);
                               }
        }

        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }


      private void SideLabel_Click(object sender, EventArgs e)
    {
        int topPosition = 20;
        try
        {
            Cursor = Cursors.Default;
            CheckBox objLabel = (CheckBox)sender;

            objLabel.Name = objLabel.ToString();
            objLabel.Font = _boldFont;
               foreach (Control ctrl in sidePanel.Controls)
            {
                if (ctrl is CheckBox)
                {
                    if (((CheckBox)objLabel).Checked == true)
                    {

                        TextBox txt = new TextBox();
                        txt.Text = "Checked";
                        sidePanel.Controls.Add(objLabel);
                        topPosition += 25;
                    }

                }
            }
                       }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);

        }
    }

我在运行时选中复选框之前得到结果。我需要在运行时选中复选框后执行操作。

您需要添加新创建的文本框:

 TextBox txt = new TextBox();
 txt.Text = "Checked";
 //sidePanel.Controls.Add(objLabel);
 sidePanel.Controls.Add(txt);
 topPosition += 25;

我根据您的评论回答
当我在运行时选中复选框时,什么也没有发生。

需要考虑的其他说明:

  • 您正在循环使用
    foreach ctrl
    ,而没有使用
    ctrl
    。因此,循环是无用的
  • 你可以换这条线

    if (((CheckBox)objLabel).Checked == true)
    
    简单地

    if (objLabel.Checked)
    

问题出在哪里?可能重复出问题的地方?当您遍历所有复选框时,似乎会出现问题。为什么不分配一个EventHandler呢?当我在运行时选中复选框时,什么也没有发生