强制.NET/C#UI Automation使用特定的区域性(土耳其语)

本文关键字:区域性 土耳其语 NET C#UI Automation 强制 | 更新日期: 2023-09-27 17:58:39

我有一个UI Automation应用程序,它是用C#编写的,使用.NET(目前是3.5,但如果4解决了这个问题,我很乐意更改)。我运行的是英文版的Windows7。我希望能够在任何给定的UI上运行这个应用程序,并使其表现如下,无论给定的UI是如何设置的,或者当前的系统语言是什么,因为这些事情通常超出了我的控制范围:

我想强制使用UI Automation的应用程序使用土耳其的大写规则。特别是,如果自动化应用程序在包含字符"i"的UI上运行,我希望UI自动化中自动将字符串/字符转换为大写的部分将该字符转换为"Il"而不是"i"。

这尤其是访问和加速键的问题。例如,如果UI中的某个按钮的访问键为"i",则该按钮的UI自动化应用程序中的AutomationElement会将其访问键列为"i",这在土耳其语中是不正确的。

我尝试过将Thread文化和Thread ui文化设置为土耳其语,但这不起作用。我不确定如何强制AutomationElement类执行此操作。任何建议/帮助/示例都将不胜感激。

如果这不清楚,请告诉我,我会尽力解释得更好。

强制.NET/C#UI Automation使用特定的区域性(土耳其语)

如果你只想正确地大写字符串,那么很容易:

string turkish = "iptal";
CultureInfo turkishCulture = new CultureInfo("tr-TR");
string upperCased = turkish.ToUpper(turkishCulture);

不幸的是,您必须对每个字符串执行此操作。不幸的是,我不太清楚你的用例是什么,所以我的答案可能不是很有用。。。