2011-06-08 32 views
0

我有一個用C#編寫並使用.NET(目前3.5,但如果4解決了問題,我將很樂意改變)的UI自動化應用程序。我使用的是英文版的Windows 7。我希望能夠在任何給定的用戶界面上運行此應用程序,並且無論給定的用戶界面如何設置或當前的系統語言是什麼,它的行爲如下:通常超出我的控制範圍:強制.NET/C#UI自動化使用特定的文化(土耳其語)

我想強制使用UI自動化的應用程序使用土耳其規則進行大小寫。特別是,如果自動化應用程序正在包含字符'i'的UI上運行,我想要自動將UI自動轉換爲大寫字符以將該字符轉換爲'I'而不是'I'的部分。

這對訪問和加速鍵而言尤其是個問題。例如,如果用戶界面中的按鈕具有「我」,因爲它是訪問鍵,那麼UI自動化應用程序中該按鈕的AutomationElement會將其訪問鍵列爲「I」,這在土耳其語中是不正確的。

我已經嘗試設置線程文化和線程的ui文化土耳其,但不起作用。我不確定如何強制AutomationElement這樣做。任何建議/幫助/例子將不勝感激。

如果這不清楚,請讓我知道,我會盡力解釋它。

回答

0

如果你只想大寫字符串正確,它就是這麼簡單:

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

不幸的是,你必須爲每個字符串做到這一點。不幸的是,我不太清楚你的用例是什麼,所以我的答案可能不是很有用......

+0

我意識到不幸的是,AutomationElement類在檢索訪問和加速器時自動執行類似於toupper的操作用於UI控件的鍵。我需要獲取UI自動化功能才能在執行字符串操作時使用該規則。 – 2011-06-09 12:41:08

+0

@Scott R:對我來說,這是明顯的錯誤。可能沒有辦法解決它,我們唯一能做的就是將bug報告給他們的跟蹤系統。 – 2011-06-10 06:45:01