有时候程序运行时,需要自动切换到英文输入状态,可通过代码进行控制输入法。
C#
static void Main(string[] args)
{
Console.WriteLine(GetCultureType());
SwitchToLanguageMode("en-US");
Console.WriteLine(GetCultureType());
Console.ReadLine();
}
/// <summary>
/// 切换输入法
/// </summary>
/// <param name="cultureType">语言项,如zh-CN,en-US</param>
private static void SwitchToLanguageMode(string cultureType)
{
var installedInputLanguages = InputLanguage.InstalledInputLanguages;
if (installedInputLanguages.Cast<InputLanguage>().Any(i => i.Culture.Name == cultureType))
{
InputLanguage.CurrentInputLanguage = InputLanguage.FromCulture(System.Globalization.CultureInfo.GetCultureInfo(cultureType));
//CurrentLanguage = cultureType;
}
}
/// <summary>
/// 获取当前输入法
/// </summary>
/// <returns></returns>
private static string GetCultureType()
{
var currentInputLanguage = InputLanguage.CurrentInputLanguage;
var cultureInfo = currentInputLanguage.Culture;
//同 cultureInfo.IetfLanguageTag;
return cultureInfo.Name;
}
VB.net
''' <summary>
''' 切换输入法
''' </summary>
''' <param name="cultureType">语言项,如zh-CN,en-US</param>
Public Sub SwitchToLanguageMode(ByVal cultureType As String)
Dim installedInputLanguages = InputLanguage.InstalledInputLanguages
For Each language As InputLanguage In InputLanguage.InstalledInputLanguages
If language.Culture.Name = cultureType Then
InputLanguage.CurrentInputLanguage = InputLanguage.FromCulture(System.Globalization.CultureInfo.GetCultureInfo(cultureType))
Exit For
End If
Next
End Sub
''' <summary>
''' 获取当前输入法
''' </summary>
''' <returns></returns>
Public Function GetCultureType() As String
Dim currentInputLanguage = InputLanguage.CurrentInputLanguage
Dim cultureInfo = currentInputLanguage.Culture
Return cultureInfo.Name
End Function