在数组中,我们可以如下命名 int num[12],则可以用num[0]到num[11]。
但是在程序里,有没有办法如下使用:我定义了一些变量比如 num1,num2,num3,num4……
有没有类似于如下代码的方法使用num1,num2,num3,num4等?for(int i=0;i<4;i++)
{
    num[i]=i; 
}
之所以问这个问题,是因为前面网页设计的时候label的名字是自动生成的,从label1到label24,想在一个循环里面处理它们。如果要修改为数组,感觉有点麻烦啊。

解决方案 »

  1.   

    具体如何处理呢?
    for里面是:numi?num[i],我都试过,均报错。
      

  2.   

    Label[] labelArray=new Label[24];
    然后对labelArray[i]逐个赋值,赋值结束后就可以对Label数组进行操作了
    这是我想到的,有没有更好的方法,请大家一起探讨
      

  3.   


    for(int i=1;i<=24;i++)
    {
        Label lab = this.form1.FindControl("Label" + i) as Label;
        if(lab != null)
        {
            //to do...
        }
    }
      

  4.   

    我的代码如下写的,但是运行的时候发现hylink和lbl都是null,没车都没有进入NavigateUrl 和Text的赋值。 for (int i = 1; i <=pagex; i++)
                {
                    HyperLink hylink = this.Form.FindControl("HyperLink"+i) as HyperLink;
                    Label lbl = this.Form.FindControl("Label" + i) as Label;
                    if (hylink!=null)
                    {
                        hylink.NavigateUrl = "images/folder.jpg";
                    }
                    if (lbl!=null)
                    {
                        lbl.Text = i.ToString();
                    }
                    //this.HyperLink+[i+1].NavigateUrl = "images/folder.jpg";
                }所有控件都是在aspx文件中写好的,定义如下:名字依次为HyperLink1 HyperLink2 HyperLink3<asp:HyperLink ID="HyperLink1" runat="server" EnableViewState="False" Height="120px"
                    Target="_blank" Width="160px">Click for details</asp:HyperLink></td>
    <td style="width: 200px; height: 30px">
                <asp:Label ID="Label1" runat="server" EnableViewState="False"></asp:Label></td>
      

  5.   

    你的这些HyperLink和Label是否在某个容器里面?
      

  6.   

    直接在页面找
    this.FindControl
      

  7.   

    向ojlovecd问一个问题,如果是在FROM中,这样的问题如何解决呢,我试了一下,好像不能这样
    编写代码:
     Label lab = this.form1.FindControl("Label" + i) as Label;
     Label lbl = this.Form.FindControl("Label" + i) as Label;
      

  8.   

    是不是和masterpage有关系,我首先有一个index.masterpage,然后freedown.master继承自index,然后freedown.aspx继承自freedown.master。我的代码实际是在freedown.aspx和freedown.aspx.cs中书写。
      

  9.   

    如果只有一层masterpage的话,是可以找到的,代码大概如下:
    Label l = (Label)this.Master.FindControl("MainBody").FindControl("Label" + i);//此页面直接继承自index.master但是有多层的话,我还没有找到方法。我的想法是:
    Label lbl = (Label)this.Master.FindControl("FreeDownBody").FindControl("MainBody").FindControl("Label" + i);
    但是报错。
      

  10.   

    是指winform吗?
    可以这样:for(int i=1;i<=24;i++)
    {
        Label lab = this.Controls["Label"+i] as Label;
        if(lab!=null)
        {
            //to do...
        }
    }
      

  11.   

    关键就是要搞清你要找的的控件的父控件是哪个,比如某个aspx如果是两层Master嵌套,要找的控件在最上层的Master中,而找控件的代码是写在aspx中的话,就应该是:
    this.Master.Master.FindControl("Label"+i)
      

  12.   

    this.Master.Master.FindControl("Label"+i)这样还是找不到,依旧是null的
      

  13.   

    楼上的朋友,我已经说过了啊。
    第一层是index.masterpage,第二层是freedown.masterpage,freedown.aspx直接继承自freedown.masterpage。我做过小测试,新建一个test.aspx,直接继承indes.masterpage,那么可以找到。
    大概如下:如果只有一层masterpage的话,是可以找到的,代码大概如下: 
    Label l = (Label)this.Master.FindControl("MainBody").FindControl("Label" + i);//此页面直接继承自index.master 但是有多层的话,我还没有找到方法。我的想法是: 
    Label lbl = (Label)this.Master.FindControl("FreeDownBody").FindControl("MainBody").FindControl("Label" + i); 
    但是报错。
      

  14.   

    那么,你的Label在哪里?index.master?freedown.master还是test.aspx?
    还有你的FindControl代码写在哪里?index.master.cs?freedown.master.cs?还是test.aspx.cs?
      

  15.   

    Label1到24,放在freedown.aspx,FindControl代码在freedown.aspx.cs。
    http://topic.csdn.net/u/20090603/13/f4a772b7-639f-4fd1-9f14-411f5e1d014e.html 这里是更详细说明
      

  16.   

    楼上的,在没有masterpage的时候可以
      

  17.   


    之所以这样,是因为Label有个Name属性,但是当你在程序中自定义变量时是不可以这样的!
      

  18.   

    是的,在WinForm中是这样处理的,我也受益了,在这里借主人的空间谢谢 ojlovecd 了!
    for(int i=1;i<=24;i++)
    {
        Label lab = this.Controls["Label"+i] as Label;
        if(lab!=null)
        {
            //to do...
        }
    }