1、在WinForm的InputLanguageChanging事件中添加e.Cancel = True
2、键盘事件向窗体注册(窗体属性)
注意:如果只是屏蔽系统的输入法并且还要有切换输入法的功能(系统切换输入法会造成某些程序卡死),那么在函数InputLanguageChanging中添加“切换输入法的代码”,这个切换输入法的代码不能加在其它地方,不然会引起输入法浮动窗口和系统右下角输入法图标不一致,因为“切换输入法的代码”只会控制输入法浮动窗口,而右下角输入法图标是根据输入法浮动窗口值来切换的,自己切换输入法的代码如下:
private void MainForm_InputLanguageChanging(object sender, InputLanguageChangingEventArgs e)
{
//程序禁止切换输入法的消息传到Windows系统
e.Cancel = true;
int iCountLan = InputLanguage.InstalledInputLanguages.Count;
//获取当前输入法的序号iFlagInputLan
for (int i = 0; i < InputLanguage.InstalledInputLanguages.Count; i++)
{
if (InputLanguage.CurrentInputLanguage.LayoutName == InputLanguage.InstalledInputLanguages[i].LayoutName)
{
iFlagInputLan = i;
break;
}
}
//获取下一个输入法的序号iFlagInputLan
if ((iFlagInputLan + 1) >= iCountLan)
{
iFlagInputLan = 0;
}
else
{
iFlagInputLan++;
}
//设置输入法
InputLanguage.CurrentInputLanguage = InputLanguage.InstalledInputLanguages[iFlagInputLan];
}