.net - 更改整个 Windows 窗体应用程序的当前区域性 .NET Compact Edition

标签 .net compact-framework setup-project cultureinfo

我需要将应用程序的当前区域性更改为 th-TH 我尝试这样做来创建以下类型的对象,并且我打算将其分配给当前线程的 CurrentCulture 属性

System.Threading.Thread.CurrentThread.CurrentCulture = 
    new System.Globalization.CultureInfo("en-US");

但是我使用的 .NET Compact 版本在 System.Threading.Thread.CurrentThread 属性中没有可用的 CurrentCulture 属性。

有什么办法可以做到这一点吗?

编辑: 我可以更改移动设备的区域设置,然后当我运行应用程序时,我可以从正确的资源文件中获取正确的文本。

但是使用安装项目安装应用程序时我无法获取正确的资源

这就是我所做的。

  1. 我创建了安装项目,并将本地化资源、主要输出以及内容文件添加到安装项目的文件系统目录中的应用程序文件夹中。
  2. 然后,我在 Debug模式下构建它并生成了所需的 Cab 文件。
  3. 我将文件传输到我的设备,然后运行 ​​cab 文件,它显示安装成功。
  4. 当我运行应用程序时,它仅以英语显示字符串,无论设备上的区域设置如何(但是当我在调试中运行相同的应用程序时,应用程序中会显示语言资源中的正确字符串模式(直接在 Visual Studio 中选择设备并在其上部署应用程序)

我还验证了所需的文件夹(例如 fr-CA、th-TH 等)是在我的应用程序的 .exe 所在的同一目录中创建的

最佳答案

根据MSDN ,这是不可能的。

You cannot set current culture programmatically on a device. They are set by the device manufacturer or manually configurable by the device user, such as with Regional Settings on a Pocket PC running Windows CE or Windows CE .NET, current culture settings are on a per-device basis.

不过,我确实找到了一篇关于Code Project的文章提出了解决这个问题的方法。
基本上,作者创建了自己的 ResourceManager 和基本表单,这意味着该解决方案可能不太容易应用于现有的紧凑框架应用程序。

根据应用程序的复杂性,您可能需要考虑自己实现某种 ResourceManager,或者使用代码项目文章中的资源管理器。

关于.net - 更改整个 Windows 窗体应用程序的当前区域性 .NET Compact Edition,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29645656/

相关文章:

.net - 未记录的string.Split()重载?

c# - 返回已完成任务的最佳方法是什么?

.net - 在 .net CF 3.5 中获取特定时区?

.net - .net 中使用什么概念来创建移动软件?

visual-studio - 尝试制作 Windows 安装程序包时 Visual Studio 的奇怪行为

c# - 如何使用某些脚本为 wpf 4.5 应用程序创建安装包

c# - 为我的程序文件夹的所有用户设置写权限

c# - 如何在 Xunit 中测试使用 List<List<T> 作为输入参数的方法

c# - 无法在 C# 中捕获 0xC0000005 异常

c# - Windows CE 按钮可以显示图像吗?