我已將計算機中的Regional Settings
更改爲俄語,並觀察到VS 2010可爲所有情況(SilverLight,ASP,winforms)提供預期的性能。請注意,我已經使用Chrome(與您的版本相同的版本)和Windows 7完成了我的測試。我不知道爲什麼會發生您報告的錯誤。
您可以做的是確保您的應用程序始終獨立於目標機器上的確切配置輸出俄語字符。我發現了一個相當有趣的post on this front。我最喜歡的選項是第一個:依靠轉換字典。適用於你的情況,這將是這樣的:
字典全局聲明:叫
Dictionary<string, string> enToRus;
功能在Form Load
填充上述詞典:
private void populateDict()
{
enToRus = new Dictionary<string, string>();
enToRus.Add("P", "П");
enToRus.Add("e", "e");
enToRus.Add("t", "т");
enToRus.Add("r", "р");
//etc.
}
方法(上textBox1
TextChanged Event
)處理在適用的情況下更換角色。
private void textBox1_TextChanged(object sender, TextChangedEventArgs e)
{
textBox1.Select(textBox1.Text.Length - 1, 1);
if (textBox1.SelectedText.Trim().Length > 0)
{
if (!enToRus.ContainsValue(textBox1.SelectedText) && enToRus.ContainsKey(textBox1.SelectedText))
{
textBox1.SelectedText = enToRus[textBox1.SelectedText];
}
}
textBox1.Select(textBox1.Text.Length, 1);
}
記住,它來自一個非常簡單的方法(檢查是否給定的角色是不是俄羅斯的那些內執行變更前上市),這可能會推動不那麼準確的結果。我沒有俄羅斯的知識(既不瞭解您提及的問題的確切條件),因此在這方面無法提供進一步的幫助;但我想你不會發現任何問題來提高此預分析的準確性(決定何時應該替換角色)。
更改區域設置幫助...謝謝!但現在我不能輸入英語:)解決方案比沒有好,但不是理想。不太喜歡隨時進行文本轉換的想法,但這可能是一種選擇。 – Budda
任何其他想法仍然歡迎! – Budda
@布達對不起,但我沒有更多的想法。從我的測試中,我會建議你依靠VS 2010來完全確定(就其看起來完美而言)。如果默認配置無論如何都失敗了,您擁有的唯一選項是即時更改字符(正如您在我的代碼中看到的,該過程非常快)。關於角色轉換方法,我在這方面做了一些研究,但是找不到比我提出的更好的東西。 – varocarbas