C# 问题foreach (Control ctrl in this.Page.Controls[3].Controls)

foreach(Controlctrlinthis.Page.Controls[3].Controls)这句中的Controls[3]中的3表示什么?publicpart... foreach (Control ctrl in this.Page.Controls[3].Controls)
这句中的Controls[3]中的3 表示什么?
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

}
protected void Button1_Click(object sender, EventArgs e)
{
StringBuilder str = new StringBuilder();//定义连接字符串
foreach (Control ctrl in this.Page.Controls[3].Controls)
{
if (ctrl.GetType().Name == "CheckBox")//判断控件类型
{
CheckBox cb =(CheckBox) ctrl;//显式转换控件类型
if(cb.Checked)
str.Append(cb.Text+"<br />");//连接内容
}
}
Literal1.Text = str.ToString();//显示所选择内容
}
}
以上是全部程序,说的具体一点。 为什么2和4就不行?
第二位老师我很赞同,可是我就是不知道从哪里知道每种控件是controls[]中的几?从哪里可以看出来,我一共加了四种控件,虽然可以挨个试出了,可要是多了,可就麻烦了。对不起我又像您发问了。麻烦您告诉我,我搞不懂睡不着觉。
展开
 我来答
wjinbd
2009-10-13 · TA获得超过8686个赞
知道大有可为答主
回答量:1536
采纳率:100%
帮助的人:1988万
展开全部
那要看你的下标第3(也就是第四个)是什么控件,这个控件中有子控件,这段程序就是检测这个控件的所有子控件,找出其中的checkbox 并进行处理
如果换成2 或者4 那么他们中要不就是没有子控件,要不就是不含你想要的控件

我个人认为
控件索引号是按照控件添加到页面的顺序来决定,所以一般添加顺序不一样 这个代码就会出现不同的结果(没经过试验)
所以程序一般不会这么编写

实用的程序应该是用 findcontrol(控件id)来定位要找的控件 而不是他的index,除非你明确知道要找的控件的index
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
foolishai
2009-10-13 · TA获得超过155个赞
知道小有建树答主
回答量:161
采纳率:0%
帮助的人:145万
展开全部
搂主的问题挺有趣的...我测试了一下..
当checkbox 是第一个添加到窗体的空间...检测到最后那个才是它...当最后添加到窗体的控件时checkbox 那它是第一个检测到的...
我测试的是textbox ,原理应该是一样的...
测试的方法
private void controlPos()
{
int i=0;
foreach ( Control c in this.Controls)
{

if (c is TextBox)
{
textBox1.AppendText("textBox1!");
break;
}
else
textBox1.AppendText("unkonw!");
i++;
textBox1.AppendText(i.ToString());
}
}

private void button1_Click_2(object sender, EventArgs e)
{
controlPos();
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
qlhycf
2009-10-12 · TA获得超过121个赞
知道答主
回答量:227
采纳率:0%
帮助的人:46.7万
展开全部
表示通过索引访问的下标。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式