public void CreateButton(string strID, string strName)
        {
            System.Windows.Forms.TabPage mybtn = new TabPage();
            mybtn.Name = "Btn" + strID;
            mybtn.Text = strName;
            tabControl1.Controls.Add(mybtn);
            Label lb = new Label();
            lb.Text = "dd";
            lb.Location = new Point(32, 36);
            mybtn.Controls.Add(lb);
        }这段代码,实现了动态添加 Label lb = new Label();到每一个TabPage 。
但是我要在函数外面调用lb 却不能实现。如果 我声明一个公共的lb 如下:
Label lb = new Label();
public void CreateButton(string strID, string strName)
        {
            System.Windows.Forms.TabPage mybtn = new TabPage();
            mybtn.Name = "Btn" + strID;
            mybtn.Text = strName;
            tabControl1.Controls.Add(mybtn);
            
            lb.Text = "dd";
            lb.Location = new Point(32, 36);
            mybtn.Controls.Add(lb);
        }
这个时候就可以在外部调用lb了,但是问题又来了:按照这样的代码,这个lb 只会显示在最后一个TabPage 里面,请高手指教一下 谢谢

解决方案 »

  1.   

    你最好是根据Label mLabel = ( Label )this.FindControl( Label的名字 );来查找动态生成的控件。然后对mLabel 进行操作。
      

  2.   

    第一个问题:
    楼上:没有FindControl这个方法.可以使用this.Controls循环来找控件.
    或是找到mybtn  然后(Label)mybtn.Controls[0]第二问题.改成下面这样应该就可以了.
    Label lb;
    public void CreateButton(string strID, string strName)
    {
    lb= new Label();
    System.Windows.Forms.TabPage mybtn = new TabPage();
    mybtn.Name = "Btn" + strID;
    mybtn.Text = strName;
    tabControl1.Controls.Add(mybtn);lb.Text = "dd";
    lb.Location = new Point(32, 36);
    mybtn.Controls.Add(lb);
    }
      

  3.   

    Label lb = new Label();
    public void CreateButton(string strID, string strName)
            {
                System.Windows.Forms.TabPage mybtn = new TabPage();
                mybtn.Name = "Btn" + strID;
                mybtn.Text = strName;            // 我覺得是控件添加順序的問題
                lb.Text = "dd";
                lb.Location = new Point(32, 36);
                mybtn.Controls.Add(lb);            tabControl1.Controls.Add(mybtn);
            
            }
      

  4.   

    lidong6(立冬) 这样做,确实是一个进步,虽然每个TabPage 都添加到了lb但是 也只是在初始化的时候,如果在外部调用这个lb的时候 始终只能更改到最后一个TabPage 我其实只想控制tabControl1,我想每个tabControl1.TabPage 的内容都是一样的,只是标题和名字不一样而已
      

  5.   

    其实问题可以简化一点  我的目的是实现:tabControl的每个TabPage里面显示的内容都一样,只是TabPage项的标题(name)不一样而已请高手出马
      

  6.   

    你的意思我基本看懂了,
    应该通过按钮或其它操作来实现在程序运行的状态下动态生成TabPage是吧?
    但是这时候问题就出来了,
    如果有两个以上的TabPage,那么也就会有两个以上的Label,你到底想访问哪一个呢?
    我建议你建一个类的域,集合ArrayList类型的,
    然后在你的函数中new Labe()后,将生成的对奖加到这个集合中ArrayList.Add(),
    这样你是按照TabPage的生成顺序添加的Label,回头你就可以按照TabPage的索引来访问对应的Label控件了,只需要ArrayList[index]即可。
      

  7.   

    tabControl的每个TabPage里面显示的内容都一样?还有稍微简单点的方法吗?