将控件从一个标签页移动到另一个标签页

时间:2014-06-19 15:00:56

标签: c# .net winforms tabs

我目前正在开发一个WinForm项目,其中有几个不同的标签。在每个选项卡中有各种控件,如按钮,子选项卡,文本框等...

我需要整合整个应用程序,包括从一个选项卡中获取某些控件并将它们移动到另一个选项卡。当我第一次尝试这样做时,我只需复制并粘贴控件。你可以想象,由于我没有使用控件移动属性,因此这不起作用,我真的只是在另一个选项卡上创建了新属性。因此,当我编写代码时,没有任何工作,因为没有为新控件分配代码。

当我再次尝试时,这次我剪切和粘贴它也保持与旧控件相同的属性(特别是代码中的引用名称),所以据我所知,代码应该通过以下方式识别控件:名称,并应用相同的操作。但是,当我编译代码时,应用程序成功构建,但控件不执行任何操作。

此时我不知道该怎么做......

5 个答案:

答案 0 :(得分:4)

使用文档大纲。

查看...其他Windows ...文档大纲。

选择所需的组件并将其从一个标签页拖到树控件中的另一个标签页。我这样做了,操作将保留在新标签页中。

答案 1 :(得分:4)

将项目拖出选项卡控件并移到表单本身上。切换到其他选项卡。然后将项目拖到该选项卡中。它基本上是2次拖动,但由于你没有剪切,所以保持所有代码链接。如果您的标签控件占用整个表单,只需在执行上述步骤时将其缩小,然后在完成后再将其缩小。

答案 2 :(得分:2)

当您“剪切”控件时,您会切断控件与其各自事件之间的连接。当你再次“粘贴”它们时,它们就不再与事件联系起来,所以它们似乎不会任何事情。

“event”方法应该仍然存在于您的代码中,但您必须手动完成并再次为每个控件订阅每个事件(通过“属性”窗口)。

或者,还原这些更改,然后打开.Designer.cs文件并查找以下内容:

this.tabPage1.Controls.Add(this.dataGridView1);

其中(例如)将dataGridView1放在tabPage1内。

如果您想将DataGridView移动到另一个TabPage,您只需将上述代码中的this.tabPage1更改为this.tabPage2

this.tabPage2.Controls.Add(this.dataGridView1);

然后,您可以翻转回设计器视图,并将控件移动到TabPage中的任何位置。

答案 3 :(得分:1)

这将从第一个TabPage剪切它们并将它们粘贴到第二个,我想你可以随意做到这一点。通过一个小的改变,你可以使它成为一个真正的副本。 希望它有所帮助

    private void ControlsToTabPage(TabPage from, TabPage to)
    {
        Control[] ctrlArray = new Control[from.Controls.Count];
        from.Controls.CopyTo(ctrlArray, 0);
        to.Controls.AddRange(ctrlArray);
    }

答案 4 :(得分:0)

我刚试过它。剪切和粘贴控件时会发生什么,丢失事件的连线。切割和粘贴后您需要做的是转到控制properties-events,找到有问题的事件,然后在右侧选择您要处理该事件的方法。