【问题标题】:Unable to copy-paste Winforms controls from a form in a vb.net project to a form in a c# project无法将 Winforms 控件从 vb.net 项目中的表单复制粘贴到 c# 项目中的表单
【发布时间】:2022-01-18 07:47:55
【问题描述】:

对于大约 140 个表单的大型重构项目,我一直在尝试通过设计器复制和粘贴这些控件。我正在使用 VS 2022,但我也尝试过使用 2019。原始项目在 .NET4.5 中,新项目在 dotnet6 中。我的机器在win10上运行。

这些是我迄今为止尝试过的事情:

  • 键盘快捷键 ( ctrl-a + ctrl-c / ctrl-x + ctrl-v )
  • 拖放(ctrl-a + 拖放)
  • 与上述方法相同,但一次一个控件(剪辑的总大小为 164k 字节)

c# 表单上下文菜单中的粘贴选项是灰色的,当我拖放时,我会看到一个“阻止”图标。

我很茫然,不打算重新设计所有这些表格。

我错过了什么吗?

【问题讨论】:

  • 尝试阅读this。在某些情况下可以,在某些情况下不能,这取决于控件或其他变量。
  • 您可以在 .Net 5 / 6 项目中导入使用 .Net Framework 构建的现有表单。右键单击Project-> Add -> Existing item,选择表单(仅主要的.vb 文件,而不是设计器或.resx 文件),等待几秒钟让表单转换(不是真正的转换),直到出现通常的图标,然后打开它,选择它的控件并将它们复制/粘贴到其他地方。之后关闭表单。

标签: vb.net visual-studio winforms copy controls


【解决方案1】:

我刚刚做了一些测试,您似乎无法在 VS 的不同实例之间拖放或复制和粘贴,而您似乎正在尝试这样做。我打开同一个解决方案两次,我能够在同一个实例中的 C# 和 VB 项目之间拖放,但我不能在实例之间的同一个 VB 项目中的两个表单之间这样做。

这意味着您必须将其中一个项目添加到包含另一个项目的解决方案中。这没什么大不了的,因为将现有项目添加到解决方案不会移动或复制该项目。解决方案只是在其现有位置引用它。完成所有拖放后,您只需再次从解决方案中删除项目即可。

【讨论】:

  • 是的,这会起作用。
  • @user17922293,感谢您的评论。我应该指出,我还使用了一个 vs 实例。您在我的图像中看到的“其他”实例只是一个分离的选项卡。此外,所有项目都在同一个解决方案中。
  • @Wauter,它只对我有用 ButtonTextBox。我建议你测试一个这样的简单场景,看看它是否适合你。如果确实如此,那么您当前的场景显然有一些特定的东西正在造成问题,因此您需要做更多的测试来弄清楚那是什么。一旦您知道问题出在哪里,您就可以想办法解决它。
【解决方案2】:

根据this 帖子,.NET 框架 4.x 在二进制级别与 .NET 核心不兼容,这会阻止您复制控件。仔细想想真的很合乎逻辑。

我已经测试了 dotnet5.0 和 dotnet6.0 都给出了问题,但 dotnet4.8 工作得很好。

作为我的问题的解决方案,我将尝试在 .NET 框架 4.8 中使用 c# 中的中间项目,然后移植到 dotnet6。

感谢您的帮助。

【讨论】:

  • 看来您已经找到了问题的解决方案,那么请考虑accepting your answer
  • 我会的,只能在 2 天后这样做(现在是 21 小时)
【解决方案3】:

在winform应用程序中不能直接从.NET Framework 4.x复制控件到.NET6,因为.NET Framework和.NET6是不同的框架,所以如果你的项目只针对windows,可以考虑将项目更新到.NET框架 4.8,允许您复制粘贴 Winforms 控件。

为了将 VB 项目(.NET Framework)转换为 C# 项目(.NET6),其中一种选择是将 InitializeComponent 方法中的 VB 代码转换为 C#,并将其粘贴到 .NET 6 中的相同位置。

同时检查:Upgrade a Windows Forms App to .NET 6 with the .NET Upgrade Assistant

注意:.NET6 不支持 .NET Framework 中的某些库,您可能需要找到它们的替代品。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-30
    • 1970-01-01
    • 1970-01-01
    • 2017-10-08
    • 1970-01-01
    • 1970-01-01
    • 2018-08-21
    • 2017-03-06
    相关资源
    最近更新 更多