我已将Regional Settings
计算机中的 更改为俄语,并观察到 VS 2010 在所有情况下(SilverLight、ASP、winforms)都提供了预期的性能。请注意,我已经使用 Chrome(与您的版本相同)和 Windows 7 进行了测试。我不知道为什么会发生您报告的错误。
您可以做的是确保您的应用程序始终输出俄语字符,这与目标计算机中的确切配置无关。我在这方面发现了一个非常有趣的帖子。我最喜欢的选项是第一个:依靠转换字典。应用于您的情况,它将是这样的:
全局声明的字典:
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
在适用的情况下处理字符替换的方法(on )。
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);
}
请记住,它来自一种非常简单的方法(在执行更改之前检查给定字符是否未列在俄语字符中),这可能会导致结果不太准确。我没有任何俄语知识(也不了解您提到的问题出现的确切条件),因此在这方面无法提供进一步的帮助;但我想你不会发现任何问题来提高这个预分析的准确性(决定什么时候应该替换一个字符)。