我目前正在开发一个WinForm项目,其中有几个不同的标签。在每个选项卡中有各种控件,如按钮,子选项卡,文本框等...
我需要整合整个应用程序,包括从一个选项卡中获取某些控件并将它们移动到另一个选项卡。当我第一次尝试这样做时,我只需复制并粘贴控件。你可以想象,由于我没有使用控件移动属性,因此这不起作用,我真的只是在另一个选项卡上创建了新属性。因此,当我编写代码时,没有任何工作,因为没有为新控件分配代码。
当我再次尝试时,这次我剪切和粘贴它也保持与旧控件相同的属性(特别是代码中的引用名称),所以据我所知,代码应该通过以下方式识别控件:名称,并应用相同的操作。但是,当我编译代码时,应用程序成功构建,但控件不执行任何操作。
此时我不知道该怎么做......
答案 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
,找到有问题的事件,然后在右侧选择您要处理该事件的方法。