如何循环一些ASP.NET标签来设置它们的属性?

syd*_*ynn 2 c# asp.net controls

我如何循环执行此操作.

protected void ddlTool_SelectedIndexChanged(object sender, EventArgs e)
{

    lblTool1.Visible = false;
    txtTool1.Visible = false;
    lblTool2.Visible = false;
    txtTool2.Visible = false;
    lblTool3.Visible = false;
    txtTool3.Visible = false;
    lblTool4.Visible = false;
    txtTool4.Visible = false;
    lblTool5.Visible = false;


    if (ddlTool.SelectedValue == "1")
    {
        lblTool1.Visible = true;
        txtTool1.Visible = true;
    }
    if (ddlTool.SelectedValue == "2")
    {
        lblTool1.Visible = true;
        txtTool1.Visible = true;
        lblTool2.Visible = true;
        txtTool2.Visible = true;
    }
    if (ddlTool.SelectedValue == "3")
    {
        lblTool1.Visible = true;
        txtTool1.Visible = true;
        lblTool2.Visible = true;
        txtTool2.Visible = true;
        lblTool3.Visible = true;
        txtTool3.Visible = true;
    }
    if (ddlTool.SelectedValue == "4")
    {
        lblTool1.Visible = true;
        txtTool1.Visible = true;
        lblTool2.Visible = true;
        txtTool2.Visible = true;
        lblTool3.Visible = true;
        txtTool3.Visible = true;
        lblTool4.Visible = true;
        txtTool4.Visible = true;
    }
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 7

不是每个文本框和标签都有一个单独的变量,而是拥有它们的集合 - 无论是a List<T>还是数组或其他什么.

然后你可以这样做:

// Potentially use int.TryParse here instead
int visibleLabels = int.Parse(ddlTool.SelectedValue);
for (int i = 0; i < labels.Count; i++)
{
    labels[i].Visible = (i < visibleLabels);
    textBoxes[i].Visible = (i < visibleLabels);
}
Run Code Online (Sandbox Code Playgroud)

(或者使用两个循环,一个将一些Visible属性设置为true,另一个将some设置为false.)

  • 由于控制阵列本身不支持我想这篇文章关于.NET创建控件数组将是一个有益的补充:http://msdn.microsoft.com/en-us/library/aa289500%28VS.71%29.aspx (2认同)