对checklistbox1进行遍历,假如选项被选中,则对应的combobox可用,否则不可用。
combobox全部按照顺序放进panel里,但是效果却是checklistbox中第一项被选中,combobox的倒数第一项被激活了,第三项被选中变成倒数第三项被激活,panel里是怎么遍历的?本人确定combobox是顺序一个一个摆的。
private void checkedListBox1_SelectedIndexChanged(object sender, EventArgs e) { for (int i = 0; i < checkedListBox1.Items.Count; i++) { if (checkedListBox1.GetItemChecked(i)) { panel1.Controls[i].Enabled = true; } else { panel1.Controls[i].Enabled = false; panel1.Controls[i].Text = "0"; } } }
解决方案
20
Controls 中的控件的初始顺序为:控件加入顺序的倒序
10
不能胡乱地想“顺序”,要明确地定义结构化的层次。
例如,你的Panel里边应该有一个相似 Grid 的组件,明确地有“行、列”概念。或Panel 里边应该有某个自定义用户控件的实例,每行为一个实例……..
总之你应该有一个基本的结构化设计方式,那样根本不用纠结什么“本人确定combobox是顺序一个一个摆的”这种话,就算是先摆最后一个combobox它也不会将第一行的checkbox对应到最后一行的combobox上。假如你看不懂最后这句话,那么你一定要从上学时的结构化的知识重新学起。
例如,你的Panel里边应该有一个相似 Grid 的组件,明确地有“行、列”概念。或Panel 里边应该有某个自定义用户控件的实例,每行为一个实例……..
总之你应该有一个基本的结构化设计方式,那样根本不用纠结什么“本人确定combobox是顺序一个一个摆的”这种话,就算是先摆最后一个combobox它也不会将第一行的checkbox对应到最后一行的combobox上。假如你看不懂最后这句话,那么你一定要从上学时的结构化的知识重新学起。
10
不要想着顺序, 本人勤快一点, 手工指定tag
例如 checkbox1的 tag , 指定为 combox1
代码里直接取 tag, 将相应的控件改下状态就好了。
例如 checkbox1的 tag , 指定为 combox1
代码里直接取 tag, 将相应的控件改下状态就好了。