自己写的代码如下:
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?
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?
这样panel.Enabled = false;就可以了,也不需要这样循环
至于整个Panel,就如速马兄所说的,Enable=flase就好了!
<asp:panel id="panel1" runat="server">
<asp:TextBox id="textBox1" runat="server" Width="100px"></asp:TextBox>
</asp:Panel>使用panel.Enabled=false的结果是,整个panel变灰色了,但是里面的控件还是照样可以操作,如在文本框输入,点button还是有反应.
{
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;
}
}
}
{
switch(control.GetType().Name)
{
case "TextBox":
TextBox textBox = (TextBox)control;
textBox.Enabled = false;
break;
case "Button":
Button button = (Button)control;
button.Enabled = false;
break;
}
}