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 里面,请高手指教一下 谢谢
{
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 里面,请高手指教一下 谢谢
楼上:没有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);
}
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);
}
应该通过按钮或其它操作来实现在程序运行的状态下动态生成TabPage是吧?
但是这时候问题就出来了,
如果有两个以上的TabPage,那么也就会有两个以上的Label,你到底想访问哪一个呢?
我建议你建一个类的域,集合ArrayList类型的,
然后在你的函数中new Labe()后,将生成的对奖加到这个集合中ArrayList.Add(),
这样你是按照TabPage的生成顺序添加的Label,回头你就可以按照TabPage的索引来访问对应的Label控件了,只需要ArrayList[index]即可。