如何在选项卡控件中的一个选项卡的另一个选项卡中显示相同的内容?

时间:2014-06-06 06:05:42

标签: c#

我正在使用按钮在标签控件中添加第二个标签。并且当按钮点击打开时,想要在tab2中显示选项卡1的所有内容。

3 个答案:

答案 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);
    }