winforms 将窗体上的控件移动到选项卡上

n3h0vuf2  于 2023-04-21  发布在  其他
关注(0)|答案(2)|浏览(160)

我已经在VisualStudio2010中的C#项目上工作了几个月(它与摄像头、电源和运动控制接口)。有一个窗体,上面有许多控件(单选按钮、按钮、文本框、位图显示...)。现在我想把所有这些放在一个标签上,这样我就可以有另一个标签。这是为了让第二个标签可以有所有的默认设置(例如,端口号、波特率、积分时间、路径名……)。
这是可行的吗?有没有办法剪切和粘贴或点击和拖动?
更新:我创建了一个表单,在上面放了一个按钮,当点击它时会显示一个带有“Hello World”的消息框。然后我在表单中添加了一个标签控件,并将按钮拖到第一个标签上。按钮仍然以相同的方式工作,点击时会显示消息框。
所以在我的大表单上,我添加了一个tabcontrol。没有调整大小,我做了一个select all,然后取消选择tabcontrol,然后把所有东西拖到选项卡上。然后我移动了选项卡控件并调整了大小,然后反复调整了选项卡窗口的大小并移动了所有控件。这起作用了除了PictureBox控件不知何故被调整了大小,所以它们比屏幕宽度大。调整了PictureBox的大小,一切都正常。(也许我只是需要鼓励才能给予一试...抱歉,如果不是最好的问题:)。
要在代码中执行此操作,可以在Form1.Designer.cs中添加:

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

但是,我必须对每个控件(Designer.cs中大约有200个控件)都这样做。

8wigbo56

8wigbo561#

这通常可以通过对.Designer.cs文件进行一些编辑来完成。首先,确保备份以防出现严重错误。放置选项卡控件并向其添加单个控件(按钮或任何内容)。然后检查.Designer.cs文件。正如您自己指出的那样,您将看到这样的一行:

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

至于表单上的现有控件,将有一堆这样的行:

this.Controls.Add(this.meErrorReport);
 this.Controls.Add(this.peWarningSign);
 this.Controls.Add(this.meHeaderText);
 this.Controls.Add(this.btnClose);

所以你要做的就是剪切这些行(不包括标签控件的那一行!),并将它们粘贴到上面显示的行后面,然后执行查找和替换来更改它们,使它们与第一行匹配:

this.tabPage1.Controls.Add(this.meErrorReport);
 this.tabPage1.Controls.Add(this.peWarningSign);
 this.tabPage1.Controls.Add(this.meHeaderText);
 this.tabPage1.Controls.Add(this.btnClose);

这通常应该可以解决问题。控件可能会定位错误,并且大多数将被隐藏,直到您增加选项卡控件的大小,但这些都是可以修复的小问题。
PS.我知道你已经解决了你的问题,但我张贴这个答案的情况下,它可以帮助你,或其他人,在未来。

z9smfwbn

z9smfwbn2#

我发现最简单的方法是将所有你想移动到TabControl中的控件剪切下来,添加TabControl,然后将剪切下来的控件粘贴回TabControl中。

相关问题