强制.NET / C#UI自动化使用特定文化(土耳其语)

时间:2011-06-08 23:28:39

标签: c# .net localization ui-automation

我有一个用C#编写并使用.NET的UI自动化应用程序(目前是3.5但如果4解决了这个问题,我很乐意改变)。我正在运行英文版的Windows 7.我希望能够在任何给定的UI上运行此应用程序,并使其行为如下,无论给定的UI如何设置或当前的系统语言是什么,就像那些东西通常是我无法控制的:

我想强制使用UI Automation的应用程序使用土耳其语规则进行大写。特别是,如果自动化应用程序在包含字符“i”的UI上运行,我希望UI自动化部分自动将字符串/字符转换为大写,以将该字符转换为“İ”而非“我”。 / p>

这尤其是访问和加速键的问题。例如,如果UI中的按钮具有“i”作为其访问键,则该按钮的UI自动化应用程序中的AutomationElement会将其访问密钥列为“I”,这在土耳其语中是不正确的。 / p>

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

如果不清楚,请告诉我,我会尝试更好地解释。

1 个答案:

答案 0 :(得分:0)

如果你想正确地大写字符串,就像那样容易:

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

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