C# 在windows窗体中动态添加复选框

C# 在windows窗体中动态添加复选框,c#,winforms,C#,Winforms,我已将复选框动态添加到面板。现在,我如何获得带有“您已选中1或2或3…”的警报消息。当选中复选框时 CheckBox[] premiumticket = new CheckBox[50]; private void Form1_Load(object sender, EventArgs e) { var panel1 = new Panel() { Size = new Size(600, 70), Location = new

我已将复选框动态添加到面板。现在,我如何获得带有“您已选中1或2或3…”的警报消息。当选中复选框时

CheckBox[] premiumticket = new CheckBox[50];
 private void Form1_Load(object sender, EventArgs e)
    {


     var panel1 = new Panel()
    {

        Size = new Size(600, 70),
        Location = new Point(20, 130),
        BorderStyle = BorderStyle.FixedSingle
    };




        for (int i = 0; i < 20; i++)
        {
           premiumticket[i]=new CheckBox();
           premiumticket[i].Text=(i+1).ToString();
           premiumticket[i].Name=(i+1).ToString();
           premiumticket[i].Location=new Point(x,y);
           panel1.Controls.Add(premiumticket[i]);

           x = x - 55;
           if (x < 55)
           {
               y = y + 20;
               x = 550;
           }
        }

        x = 550; y = 10;

        Controls.Add(panel1);  
   }
CheckBox[]premiumticket=新建复选框[50];
私有void Form1\u加载(对象发送方、事件参数e)
{
var panel1=新面板()
{
尺寸=新尺寸(600,70),
位置=新点(20,130),
BorderStyle=BorderStyle.FixedSingle
};
对于(int i=0;i<20;i++)
{
premiumticket[i]=新复选框();
premiumticket[i].Text=(i+1).ToString();
premiumticket[i].Name=(i+1).ToString();
premiumticket[i]。位置=新点(x,y);
面板1.控件。添加(premiumticket[i]);
x=x-55;
如果(x<55)
{
y=y+20;
x=550;
}
}
x=550;y=10;
控件。添加(面板1);
}

为每个复选框动态创建事件,并在其上添加警报代码

为每个复选框添加事件处理程序:

public void Checkbox_CheckedChanged(Object sender, EventArgs e) {
    CheckBox cb = (CheckBox)sender;

    MessageBox.Show( cb.Name + " was clicked!");
}

for (int i = 0; i < 20; i++) {
    premiumticket[i] = new CheckBox();
    premiumticket[i].OnCheckChanged += new EventHandler( Checkbox_CheckedChange );
    ...
}
public void Checkbox\u CheckedChanged(对象发送方,事件参数e){
复选框cb=(复选框)发送方;
MessageBox.Show(cb.Name+“已单击!”);
}
对于(int i=0;i<20;i++){
premiumticket[i]=新复选框();
premiumticket[i].OnCheckChanged+=新事件处理程序(复选框\u CheckedChange);
...
}

将此项添加到for循环中:

premiumticket[i].OnCheckChanged += new EventHandler( premiumTicketChanged );
复选框切换的处理程序:

public void premiumTicketChanged (Object sender, EventArgs e)
{
    int ticketCount = premiumticket.Count(c => c.Checked);
    MessageBox.Show( string.Format("You have checked {0} checkboxes....", ticketCount));
}

您的实现可能是另一个。

动态添加控件后,可以使用AddHandler管理此控件的事件。
请记住,将checkbox autopostback属性设置为true。

如果单击一个复选框,则不会显示任何按钮。这表明您已选中(复选框的名称)checkbox autopostback是ASP.Net概念。WinForms在上面的问题中被使用。这是真的。对不起,我误解了上下文。我没有其他联系方式,所以我将在这里输入评论。不要添加管道字符(
|
)来分隔带有
R
标记的代码块的数据列。这是对数据的故意破坏。这些伪管道字符阻止将文本粘贴到
R
解释器中。我不知道你对这个故意破坏的问题的编辑是如何通过最近的审查()的,但它不应该通过。我回滚了编辑。ok@MatthewLundberg如果我做错了什么,我很抱歉谢谢你的建议,我会记住的
 var checkBox = new CheckBox { ID = "WCCheckBox" + item.ItemID.ToString(), ItemID = item.ItemID, Checked = item.UserValue == "1", CssClass = "wounditem" };