我正在使用按钮在标签控件中添加第二个标签。并且当按钮点击打开时,想要在tab2中显示选项卡1的所有内容。
答案 0 :(得分:0)
您应该创建一个简单的 UserControl ,它将包含所有必需的控件和处理该控件的逻辑。完成后,您只需将该控件添加到您创建的每个TabPage中即可。
如果要将所有控件从一个TabPage复制到另一个TabPage,您要查找的是克隆'。要查看此关键字的搜索结果: c# clone tabpage
我会选择第一种方法,因为结果更清晰....如果你要克隆你的控件,你需要确保你处理所有克隆的控件事件...这可能会有点混乱。
答案 1 :(得分:0)
对于一个快速而肮脏的问题,你会得到快速而肮脏的答案:
private void duplicateTab()
{
// Your TabControl Name
TabPage selectedTab = tabControl1.SelectedTab;
TabPage newTab = new TabPage();
foreach (Control ctrl in selectedTab.Controls)
{
Control newCtrl = (Control)Activator.CreateInstance(ctrl.GetType());
PropertyDescriptorCollection pdc = TypeDescriptor.GetProperties(ctrl);
foreach (PropertyDescriptor proDe in pdc)
{
object val = proDe.GetValue(ctrl);
proDe.SetValue(newCtrl, val);
}
newTab.Text = "New Tab";
newTab.Controls.Add(newCtrl);
}
tabControl1.TabPages.Add(newTab);
}
答案 2 :(得分:0)
当看到这是多么容易时,您将对自己感到非常沮丧。
private void NewTab_Click(object sender, RoutedEventArgse)
{
var tab1 = new TabItem();
tab1.Header = "New Tab";
tab1.Content = [name of tab to copy].Content;
[name of tab control].Items.Add(tab1);
}
这是我的代码:
private void NewTab_Click(object sender, RoutedEventArgs e)
{
var tab1 = new TabItem();
tab1.Header = "New Tab";
tab1.Content = tabitem1.Content;
TabControl1.Items.Add(tab1);
}