private void button2_Click(object sender, EventArgs e)
        {
            TabPage tp = new TabPage();
            tp.Text = "New TabPage";
            ListView lsv = new ListView();
            lsv.Width = 200;
            lsv.Location = new Point(0, 0);
            lsv.Items.Add("aaa");
            lsv.Items.Add("bbb");
            lsv.Items.Add("ccc");
            tp.Controls.Add(lsv);
            this.tabControl1.TabPages.Add(tp);        }
这个控件生成后需要用timer调用,请问如何在其它地方调用这个生成的控件?

解决方案 »

  1.   

    TabPage tabToFind = null;foreach (TabPage tab in this.tabControl1.TabPages)
    {
         if (tab.Text.Equals("New TabPage"))
         {
             tabToFind = tab;
             break;
         }
    }if (tabToFind != null)
    {
         // do your work
    }
      

  2.   

    将TabPage tp 定义成类成员;直接全局调用
    或者遍历一下
      

  3.   

     foreach (TabPage tab in tabControl1.TabPages)
                {
                    foreach (Control c in tab.Controls)
                    {
                        MessageBox.Show(c.Name);
                    }
                }
      

  4.   

    我要操作的是ListView lsv  不是TabPage 
      

  5.   

    TabPage 和ListView 都是动态生成的
    怎么遍历得到ListView 控件?
      

  6.   

    道理是一样的,你可以定义一个全局变量,把你的 listview 赋给这个全局变量。就行了。或者干脆保存在session里面。这样画面刷新也没问题。也可以得到原来控件里面的值。
      

  7.   


            private void button1_Click(object sender, EventArgs e)
            {
                TabPage newtabPage = new TabPage();
                newtabPage = GetTabPage("New TabPage");
                if(newtabPage!=null)
                {
                    ListView lv = new ListView();
                    lv = GetListView(newtabPage);
                    if(lv!=null)
                    {
                        MessageBox.Show(lv.Items[0].ToString());
                    }
                    
                }
                
            }
            private TabPage GetTabPage(String TabPageText)
            {                                  
                foreach(TabPage newtabPage in tabControl1.TabPages)
                {
                    if (newtabPage.Text == TabPageText)
                        return newtabPage;            }
                return null;
            }
            private ListView GetListView(TabPage tp)
            {
                if (tp == null)
                    return null;
                foreach(Control con in tp.Controls)
                {
                    if (con is ListView)
                        return (ListView)con;
                }
                return null;        }