CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  ASP.NET

求如何disable panel里的控件

楼主hanfaye(静静的走)2005-07-14 18:25:55 在 .NET技术 / ASP.NET 提问

自己写的代码如下:  
  public   void   disableControls(System.Web.UI.WebControls.Panel   panel)  
  {  
  string   type="";  
                    string   mButtonTypeString="System.Web.UI.WebControls.Button";  
  System.Web.UI.WebControls.Button   bt   =   null;  
   
  foreach   (System.Web.UI.Control     cc     in   panel.Controls)  
  {  
          type   =   cc.GetType().ToString();  
                          if   (type.CompareTo(mButtonTypeString)==0)  
        {  
              bt   =(System.Web.UI.WebControls.Button)   cc;  
              bt.Enabled   =   false;  
        }  
  }  
  }  
  debug时发现,cc.GetType()返回的都是LiteralControl.   何解?    
  当遇到Button时,为什么不是Button? 问题点数:100、回复次数:8Top

1 楼Sunmast(速马@Redmond, WA)回复于 2005-07-14 18:44:11 得分 0

"panel内"的意思应该是该panel是内部那些控件的容器控件  
  这样panel.Enabled   =   false;就可以了,也不需要这样循环Top

2 楼silentwins(原谅我当天不懂得珍惜只知任性...)回复于 2005-07-14 18:53:39 得分 0

关于类型问题,我以前大概遇到这样的情况,好像要把Control强行转换成你所要对应的类型才行  
  至于整个Panel,就如速马兄所说的,Enable=flase就好了!Top

3 楼hanfaye(静静的走)回复于 2005-07-14 19:08:30 得分 0

panel里的意思是放在panel里的控件,如下:  
  <asp:panel   id="panel1"   runat="server">  
  <asp:TextBox   id="textBox1"   runat="server"   Width="100px"></asp:TextBox>  
  </asp:Panel>  
   
  使用panel.Enabled=false的结果是,整个panel变灰色了,但是里面的控件还是照样可以操作,如在文本框输入,点button还是有反应.Top

4 楼zeusvenus()回复于 2005-07-14 19:11:11 得分 0

用FINDCONTROL试试。Top

5 楼hanfaye(静静的走)回复于 2005-07-14 19:16:02 得分 0

FindControl()需要control的ID,   我就是不想用ID一个一个的disable.   我想做一个通用的方法.Top

6 楼silentwins(原谅我当天不懂得珍惜只知任性...)回复于 2005-07-14 19:19:03 得分 50

public   void   disableControls(System.Web.UI.WebControls.Panel   panel)  
  {  
  string   type="";  
                    string   mButtonTypeString="System.Web.UI.WebControls.Button";  
  System.Web.UI.WebControls.Button   bt   =   null;  
   
  foreach   (System.Web.UI.Control     cc     in   panel.Controls)   //这里声明cc为Control  
  {  
          type   =   cc.GetType().ToString();                           //所以这里type=Control  
                          if   (type.CompareTo(mButtonTypeString)==0)         //所以这里条件判断为假  
        {  
              bt   =(System.Web.UI.WebControls.Button)   cc;   //再所以这里两行根本不会执行  
              bt.Enabled   =   false;  
        }  
  }  
  }  
  Top

7 楼skytear()回复于 2005-07-14 19:26:11 得分 50

foreach(System.Web.UI.Control   control   in   this.Panel1.Controls)  
  {  
  switch(control.GetType().Name)  
  {  
  case   "TextBox":  
  TextBox   textBox   =   (TextBox)control;  
  textBox.Enabled   =   false;  
  break;  
  case   "Button":  
  Button   button   =   (Button)control;  
  button.Enabled   =   false;  
  break;  
  }  
  }Top

8 楼skytear()回复于 2005-07-14 19:27:14 得分 0

加Case还可以加上对其他控件的控制,测试通过。Top

相关问题

  • 请教!如何让input控件、list控件enable和disable。
  • 如何使一控件disable,enable!!!
  • 如何在PANEL里设计时候添加控件并灵活定位控件?
  • 在程序中如何让一个checkbox控件disable
  • 请问如何将html中的控件灰掉,即使其disable?
  • 请问如何让Disable的控件用程序Enable?
  • 如何让一个Dialog上的所有控件都变为Disable
  • Panel 控件位置??
  • 如何让Panel控件有个 滚动条?
  • 如何使Panel控件响应拖拽?在线等待,100分

关键词

  • 控件
  • bt
  • panel
  • mbuttontypestring
  • webcontrols
  • ui
  • control
  • button
  • cc
  • gettype

得分解答快速导航

  • 帖主:hanfaye
  • silentwins
  • skytear

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo