标题:有关C#中容器和按钮的问题
只看楼主
hcx888
Rank: 1
等 级:新手上路
帖 子:68
专家分:0
注 册:2013-4-17
结帖率:70%
已结贴  问题点数:10 回复次数:6 
有关C#中容器和按钮的问题


正如上面的截图,窗体里面有三个白色的容器panel ,当窗体初始化的时候,我用了代码  panel1.Controls.Clear() ; panel2.Controls.Clear(); panel3.Controls.Clear();   然后当我点击button4的时候 三个容器就会把三个按钮加载进去 代码是 panel1.ControlsAdd(button1); panel2.Controls.Add(button2); panel3.Controls.Add(button3);  

问题就是:当我容器或者按钮同时变多的时候,代码就跟着要变得越来越多,有什么好办法,或者用循环语句 很好的控制 ???

而且最好不要在 三个小容器的下面 添加一个大的容器把小容器都放进去,利用代码 panel.Visible = true;  panel.Visible = false;来控制小容器和按钮的出现
搜索更多相关主题的帖子: 按钮 而且 最好 
2013-04-26 17:23
yhlvht
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:36
帖 子:707
专家分:4405
注 册:2011-9-30
得分:5 
循环窗体Form内所有控件啊,判断控件类型是panel,就弄一个button进去呗
foreach(Control c in form1.Controls)    //form1是实例,不是窗体名
2013-04-26 19:00
hcx888
Rank: 1
等 级:新手上路
帖 子:68
专家分:0
注 册:2013-4-17
得分:0 
回复 2楼 yhlvht
能具体点吗?还是有点看不明白!在语句哪里写容器的名字?
2013-04-26 22:26
yhlvht
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:36
帖 子:707
专家分:4405
注 册:2011-9-30
得分:0 
foreach(Control c in form1.Controls) //循环窗体的所有控件
{
    //每个父控件是窗体的,都会被取出来,但父控件不是窗体的,例如panel里面有个button,那么button的父控件是panel,这个button就不会被取出来,若要取出所有控件,需要递归,但你只取panel,这样就可以了
    //每个控件取出来都是被c指向的,c是引用
    //c.Type可以得到控件类型
    //如果控件类型是Panel
    //(Panel)c.Controls.Add(button)
}
2013-04-27 01:14
hcx888
Rank: 1
等 级:新手上路
帖 子:68
专家分:0
注 册:2013-4-17
得分:0 
回复 4楼 yhlvht
Control c in form1.Controls 这句循环条件语句中 如果 form1 是一个实例,不是窗体名,那就是要自己定义一个 变量form1 吗?


我只是一个新手,啰嗦一点,不好意思啊!
2013-04-27 08:10
lxb932979339
Rank: 5Rank: 5
等 级:职业侠客
威 望:4
帖 子:84
专家分:313
注 册:2013-4-24
得分:5 
只有实例化的对象才有属性、方法可言,引用类型的变量只是在堆栈中上辟了一段内存空间(4个字节,用来存储实例化对象的地址,而对象时存储在托管堆中的,也就是说堆栈只存储地址,而这个地址指向的是托管堆中存储实例化对象的那块内存)
2013-04-27 09:19
yhlvht
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:36
帖 子:707
专家分:4405
注 册:2011-9-30
得分:0 
foreach(Control c in this.Controls) //估计你是写在窗体本身的类里的吧,那用this就可以了
2013-04-27 15:37



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-405602-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.365872 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved