C# 动态地将内容添加到选项卡页面
我正在尝试使用c#将列表框和图片动态添加到tabcontrol中动态创建的tabpages中。表单有一个按钮,它可以动态地为tabcontrol创建tabpages,还可以在列表框内部添加其他内容 问题是,当我第二次按下按钮时,它会删除上一个选项卡中的所有内容,并将其添加到上一个选项卡中C# 动态地将内容添加到选项卡页面,c#,winforms,C#,Winforms,我正在尝试使用c#将列表框和图片动态添加到tabcontrol中动态创建的tabpages中。表单有一个按钮,它可以动态地为tabcontrol创建tabpages,还可以在列表框内部添加其他内容 问题是,当我第二次按下按钮时,它会删除上一个选项卡中的所有内容,并将其添加到上一个选项卡中 private void AddNewPr_Click(object sender, EventArgs e) { TabPage tab = new TabPage();
private void AddNewPr_Click(object sender, EventArgs e)
{
TabPage tab = new TabPage();
ListBox list = new ListBox();
ListBox list2 = new ListBox();
PictureBox pictureBox = new PictureBox();
PictureBox pictureBox2 = new PictureBox();
tab.Name = "tabPage" + n;
tab.Text = "Property " + n;
tabControl1.Controls.Add(tab);
list.Items.AddRange(new object[] {
"Id",
"Name"
});
//more list properties here///
//other items here created/////
tab.Controls.Add(list);
tab.Controls.Add(list2);
tab.Controls.Add(pictureBox);
n++;
}
我还声明了一个整数incrementor,以便所有新内容都有自己的名称标识。
另一个问题是,我无法访问pictureBox click事件处理程序,它也是动态创建的
谢谢你的帮助 要从类中的其他方法访问新创建的项(
list
,list2
),需要创建类级变量。例如,将示例展开一点:
public class MyForm : Form
{
//Class-level variables, accessible to all methods in the class
private ListBox _list;
private ListBox _list2;
private void AddNewPr_Click(object sender, EventArgs e)
{
TabPage tab = new TabPage();
_list = new ListBox();
_list2 = new ListBox();
PictureBox picBox = new PictureBox();
picBox.Click = picBox_Click;
//More stuff here
//Add the controls
tabControl1.Controls.Add(tab);
tab.Controls.Add(list);
tab.Controls.Add(list2);
tab.Controls.Add(pictureBox);
}
private void picBox_Click(object sender, EventArgs e)
{
//_list and _list2 are in scope here because they are defined at the class-level
_list.Items.AddRange(new object()["Id", "Name"]);
}
}
尝试更改它,以便将
选项卡
添加到选项卡控件
属性的项
属性,而不是控件
属性。所以应该是:tabControl1.Items.Add(tab)
。好的,我修复了内容的问题,因为我必须在tabs声明之后初始化列表和框。现在唯一的问题是访问click事件处理程序,以便我可以将项目从动态列表1添加到2。实际上,看起来您可能使用的是WinForms,而不是WPF。请添加您正在使用的技术的标记。我仍然不知道如何从pictureBox_Click(object sender,EventArgs e){}中访问列表和列表2。如果您想从类中的另一个方法访问它们,您需要创建类级变量来保存对列表
和列表2
的引用。谢谢,伙计,那真的很有帮助!!又有问题了。创建新选项卡时,上一选项卡中的“列表”无法向列表中添加更多项目2我不确定是否遵循。如果要添加多个选项卡,并希望跟踪所有选项卡上的所有列表框,则需要使用动态方法(如数组)来创建和跟踪每个选项卡上的列表框。上面的代码只是一个示例,演示如何在类范围内定义\u list
变量,并在类中的不同方法中使用它。