我需要在ComboBox
应用程序中的WPF
中显示已安装语言的列表。例如,我安装了英语(美国)和英语(印度)。我想在我的ComboBox
我为此使用CultureInfo
类。以下是我正在尝试的片段。我能够得到所有的文化。但是我只需要通过系统设置安装的区域性。
var cultureInfos = CultureInfo.GetCultures(CultureTypes.NeutralCultures);
foreach (var culture in cultureInfos)
{
Console.WriteLine(culture.Name);
}
答案 0 :(得分:1)
您可以使用本机函数GetKeyboardLayoutList
来获取已安装输入语言的列表。
以下是示例:
IEnumerable<CultureInfo> GetInstalledInputLanguages()
{
// first determine the number of installed languages
uint size = GetKeyboardLayoutList(0, null);
IntPtr[] ids = new IntPtr[size];
// then get the handles list of those languages
GetKeyboardLayoutList(ids.Length, ids);
foreach (int id in ids) // note the explicit cast IntPtr -> int
{
yield return new CultureInfo(id & 0xFFFF);
}
}
[DllImport("user32.dll")]
static extern uint GetKeyboardLayoutList(int nBuff, [Out] IntPtr [] lpList);