无法将类型为“ System.Web.UI.LiteralControl”的对象转换为类型为“ System.Web.UI.WebControls.Button”的

时间:2019-01-26 07:15:23

标签: c# asp.net

我收到此错误:无法将类型为“ System.Web.UI.LiteralControl”的对象转换为类型为“ System.Web.Controls.TextBox

foreach(Control x in this.Controls)
{
 Button btn = (Button)x;
 btn.Enabled = true;
}

1 个答案:

答案 0 :(得分:1)

您的某些控件不是按钮。如果您尝试将它们强制转换为按钮,则会出现此错误。

您可以使用LINQ和OfType()方法从列表中删除非按钮。使用OfType()也会自动转换结果,因此您不需要中间变量。

//using System.Linq;
foreach(Button btn in this.Controls.OfType<Button>())
{
    btn.Enabled = true;
}

如果要使用老式方法,请按以下步骤操作:

foreach(Control x in this.Controls)
{
    Button btn = x as Button;
    if (btn != null)
    {
        btn.Enabled = true;
    }
}