Code Bye

遍历panel里的控件是怎么排序的


对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上。假如你看不懂最后这句话,那么你一定要从上学时的结构化的知识重新学起。

10

不要想着顺序, 本人勤快一点, 手工指定tag
例如 checkbox1的 tag , 指定为 combox1
代码里直接取 tag, 将相应的控件改下状态就好了。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明遍历panel里的控件是怎么排序的