C# 动态创建复选框并检测选中项
我正在创建一个动态的五个复选框,并在一个GroupBox中创建一个for循环。 现在,它们是动态创建的,所以我不知道如何将ChangeCheck方法附加到它们上 所有这些复选框都是相关的,所以我尝试做的是这样的:C# 动态创建复选框并检测选中项,c#,checkbox,C#,Checkbox,我正在创建一个动态的五个复选框,并在一个GroupBox中创建一个for循环。 现在,它们是动态创建的,所以我不知道如何将ChangeCheck方法附加到它们上 所有这些复选框都是相关的,所以我尝试做的是这样的: 动态创建5个复选框 将每个复选框添加到列表中 当列表中的特定复选框处于启用状态时,将触发一个方法 以下是我创建复选框的方式: for (int i = 0; i < 5; i++) { CheckBox chk = new CheckBox(); chk.size
for (int i = 0; i < 5; i++)
{
CheckBox chk = new CheckBox();
chk.size = new Size(10, 10);
chk.Top = 10
chk.Left = 20
chk.Text = i.ToString();
group_box_name.controls.Add(chk);
}
for(int i=0;i<5;i++)
{
复选框chk=新复选框();
chk.size=新尺寸(10,10);
chk.Top=10
左侧通道=20
chk.Text=i.ToString();
组框名称.控件.添加(chk);
}
现在,如何检测哪个复选框处于打开/关闭状态?将选中的更改事件添加到动态创建的复选框中。您还可以添加名称
for (int i = 0; i < 5; i++)
{
CheckBox chk = new CheckBox();
chk.Name = "chk" + i.ToString();
chk.size = new Size(10, 10);
chk.Top = 10
chk.Left = 20
chk.Text = i.ToString();
chk.CheckedChanged += checkBox_CheckedChanged;
group_box_name.controls.Add(chk);
}
private void checkBox_CheckedChanged(object sender, System.EventArgs e)
{
CheckBox chk=sender as CheckBox;
if(chk!=null)
{
if(chk.Checked)
{
string chkName=chk.Name;
string chkText=chk.Text;
//your code
}
}
}
for(int i=0;i<5;i++)
{
复选框chk=新复选框();
chk.Name=“chk”+i.ToString();
chk.size=新尺寸(10,10);
chk.Top=10
左侧通道=20
chk.Text=i.ToString();
chk.CheckedChanged+=复选框\u CheckedChanged;
组框名称.控件.添加(chk);
}
私有无效复选框\u CheckedChanged(对象发送方,System.EventArgs e)
{
复选框chk=发送者为复选框;
如果(chk!=null)
{
如果(已检查)
{
字符串chkName=chk.Name;
字符串chkText=chk.Text;
//你的代码
}
}
}
您可以执行以下操作:
int top = 0;
for (int i = 0; i < 5; i++)
{
CheckBox chk = new CheckBox();
chk.size = new Size(10, 10);
chk.Top += (5 + 10); //Spacing = 5, CheckboxHeight = 10
chk.Left = 20;
chk.Text = i.ToString();
chk.CheckedChanged += CheckBox_CheckedChanged;
chk.Tag = i;/*You can put anything here.
Otherwise you could also use the Name property..
It just helps to determine which checkbox was currently checked */
group_box_name.controls.Add(chk);
}
private void checkBox_CheckedChanged(object sender, System.EventArgs e)
{
CheckBox cbx = (CheckBox)sender;
if(cbx != null)
{
int tag = int.Parse(cbx.Tag.ToString());
switch(tag)
{
case 0:
//Do whatever:
break;
//Handle other cases here:
}
}
}
inttop=0;
对于(int i=0;i<5;i++)
{
复选框chk=新复选框();
chk.size=新尺寸(10,10);
chk.Top+=(5+10);//间距=5,复选框高度=10
chk.左=20;
chk.Text=i.ToString();
chk.CheckedChanged+=复选框\u CheckedChanged;
chk.Tag=i;/*您可以在此处放置任何内容。
否则,您也可以使用Name属性。。
这有助于确定当前选中了哪个复选框*/
组框名称.控件.添加(chk);
}
私有无效复选框\u CheckedChanged(对象发送方,System.EventArgs e)
{
复选框cbx=(复选框)发件人;
如果(cbx!=null)
{
int tag=int.Parse(cbx.tag.ToString());
开关(标签)
{
案例0:
//做任何事:
打破
//在这里处理其他案件:
}
}
}
创建事件处理程序时只需添加一个事件处理程序-chk.CheckedChanged+=checkboxChanged
-checkboxChanged的发送方
参数将是复选框。我想您应该在每次迭代中增加chk.Top
。否则,它们将被置于彼此之上…@stuartd,谢谢,它正在工作,但我如何才能知道选中了哪个复选框?发件人对象中是否有我可以检索的内容?@裸体是的,这里的代码只是一个示例,感谢您的关注。要确定选中了哪个复选框,您可以设置标记并在checkbox cbx=(checkbox)sender代码>谢谢,这是我做的方法。虽然由于某种原因,标记不能与int.Parse一起使用,所以我使用了Name。谢谢这是真的。。。标记的类型为object
,int.Parse(“string”)接受一个字符串。我缺少.ToString()
。我将在我的回答中修正这一点