c# - 用两种语言开发 Windows 窗体应用程序时奇怪的快捷键行为

标签 c# visual-studio visual-studio-2017

我最近遇到了一个比较奇怪的问题:我在 Visual Studio 2017 中开发了一个 Windows 窗体应用程序 (C#)。最初的实现是在英文版本(System 和 Visual Studio)上完成的。该应用程序具有多种形式,可以通过快捷键组合(例如 ctrl + alt + P)打开。

现在,最近我不得不继续在安装了 germen Visual Studio 的德语系统上进行开发。我很惊讶,上面提到的捷径会导致建筑失败。只有在将快捷方式更改为“Strg + ALt + P”后,它才会起作用——但仅限于此系统;在 ENG 系统上,构建失败,因为无法识别“Strg”。

天哪,为什么 Visual Studio 会根据系统/版本语言来考虑键?不可能像键之类的东西依赖于语言,不是吗?这意味着,不可能开发出可以用多种语言构建的应用程序——而且有了这种多语言团队,将不再可能…… 我错过了什么?我已经尝试翻译 ENG 和 GER resx 文件中的快捷方式,但这也不能解决问题。 任何帮助将不胜感激 - 我被困在这里。

最佳答案

这是 Visual Studio 的一个“特性”。已知解决方法:在代码中设置所有快捷方式,而不是在编辑器中。

MSBuild cannot process resource files
Problems with shortcuts (e.g. Ctrl + P) in resx files when using VS2017 an a German Windows
Is there a way to fix Visual Studio ResX-Keyboard shortcut problem?

如果您使用版本控制系统,其他可能的解决方法虽然复杂但可行,但可以使用一些脚本来维护存储库中的 Ctrl,但将其转换为 Strg客户端,如果需要的话。

这里要注意一件事,如果您不使用本地化,就不会发生这种情况。在这种情况下,所有数据都存储在源代码中。但是,如果将表单的 Localizable 属性设置为 true,则属性将存储到 .resx 文件中。微软很久以前就知道这个问题,不会修复它。他们建议的解决方法:仅使用英文 Windows。

关于c# - 用两种语言开发 Windows 窗体应用程序时奇怪的快捷键行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58711320/

相关文章:

c# - 如何获取像 ReadOnlySpan 这样的 ref 结构的 sizeof?

c# - 在 C# 中不使用 String.Split 反转句子的单词

c# - 将 gridview 写入文件不适用于嵌套的 for 循环

c# - Visual Studio 不使用 List 初始化格式化文档

c++ - 警告 C26454 : Arithmetic overflow: '-' operation produces a negative unsigned result at compile time (io. 5)

c# - 从现有数据库向 DbContext 添加表?

c# - 你能在 IF 语句中测试一系列值吗

c# - 我无法访问 EnforceConstraints?

.net - 如何在设计器中按名称查找按钮?

C++17 标准库包括不在 Visual Studio 2017 中使用 Android 项目