菜鸟问this.Controls和Form.Controls的区别?

panwen516 2009-02-16 07:03:55
foreach (Control c in this.Controls)
{
if (c.GetType() == typeof(Button))
{
((Button)c).Text = "hehe";
}
}
foreach (Control c in Form.Controls)
{
if (c.GetType() == typeof(Button))
{
((Button)c).Text = "hehe";
}
}
第一个循环不能改变Button属性Text的值,第二个就可以,这两个Controls有什么区别呀?
...全文
282 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
亦桐 2009-02-17
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 ojlovecd 的回复:]
因为Button在Form内,Form在Page内
this指代Page,所以找不到
[/Quote]
支持
lsgy2008 2009-02-17
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 js1998 的回复:]
顶一下
[/Quote]
up
bj890 2009-02-17
  • 打赏
  • 举报
回复
up
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 ojlovecd 的回复:]
因为Button在Form内,Form在Page内
this指代Page,所以找不到
[/Quote]UP
js1998 2009-02-16
  • 打赏
  • 举报
回复
顶一下
vrhero 2009-02-16
  • 打赏
  • 举报
回复
foreach (Control c in this.Controls)

foreach (Control c in this.Form.Controls) //你把这句改一下就知道什么区别了...
webdiyer 2009-02-16
  • 打赏
  • 举报
回复
楼主是在aspx文件的后台代码中使用上面的方法的吧?如果这样,区别很明显,this.Controls是Page即当前页面中的子控件,服务器端Form控件就是this.Controls集合中的一个子控件,但form中的文本框、按钮、下拉框等则不是this.Controls的子控件,而是form.Controls的子控件,所以你的第一个方法当然遍历不到form中的Button控件了,而第二个方法才可以。
hb0513 2009-02-16
  • 打赏
  • 举报
回复
up
hhh871030 2009-02-16
  • 打赏
  • 举报
回复
this.Controls包括页面上所有的控件,如果当那个控件不是Button类型的时候,你转换它的时候就会报错
wuyq11 2009-02-16
  • 打赏
  • 举报
回复
this。Controls页面
form。Controls表单控件
http://blog.csdn.net/cuizhanjun1981/archive/2006/06/05/773931.aspx
我姓区不姓区 2009-02-16
  • 打赏
  • 举报
回复
因为Button在Form内,Form在Page内
this指代Page,所以找不到
青梦奇缘 2009-02-16
  • 打赏
  • 举报
回复
this好像是类内
在页面载入事件处理函数中用isPost函数应该可以做到第二种效果
呵呵,我是新手!
jiangshun 2009-02-16
  • 打赏
  • 举报
回复
this和form所值的范围不一样

62,025

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧