2

我正在循环遍历 asp:Panel 的 Controls 集合,但我不确定如何设置特定于某些控件的属性...

例如,Panel 可能包含一个 DropDownList,我希望能够设置和获取它的 SelectedValue。或者它可能包含一个 TextBox,我想设置和获取 Text 属性。

我正在使用这段代码来遍历:

foreach (Control control in panel.Controls)
{
    // ...
}

而且由于我从中只得到一个基本控件,因此似乎无法获取/设置任何这些属性,因为它们不是为基本控件定义的。

那么该怎么办?

谢谢

4

3 回答 3

2

一种可能性是使用as运算符

foreach (Control control in Controls) {
    TextBox txt = control as TextBox;
    if (txt!=null) {
        txt.Text = "bla";
        ...
    }

    ComboBox cbo = control as ComboBox;
    if (cbo!=null) {
        cbo.SelectedItem = ...
        ...
    }

    ...
}

注意:如果您有多个同一类型的控件,则可以使用该Tag属性来存储附加信息。虽然Tag是对象类型,但您还需要as此处的运算符...

于 2013-08-06T19:13:46.017 回答
0

您始终可以检查类型,然后将其转换为该类型。

foreach (Control control in Controls)
{
  if (control.GetType().Equals(typeof(DropDownList)))
  {
    ((DropDownList)control).Enabled = value;
  }
}
于 2013-08-06T19:08:29.190 回答
0

您应该能够is像这样使用运算符:

if(control is DropDownList)
{
    // Cast control as DDL and do your work
}
于 2013-08-06T19:08:39.073 回答