工作 · 2023年3月12日 0

WPF 设置TextBox的输入法

一、InputLanguageManager类

这个类可以控制微软输入法的语言的切换。
很简单只有两个附加属性:
InputLanguageRestoreInputLanguage使用起来非常简单。
控制输入语言的首选项,以及光标离开控件时输入语言是否恢复。

1.1 InputLanguage(控制输入法的首选语言)


该附加属性用于控制输入语言的首选项。
如果你在你的TextBox上加入InputLanguageManager.InputLanguage,那么当你的光标进入TextBox时,会自动切换至你设置的语言。如下:

sdafafasfdaf


如上,光标移动到第一个TextBox时,会切换到英语输入法,移动到第二个TextBox时,会切换到中文输入法。前提是你的系统安装了这两种语言的输入法。嗯,如果你是家庭版的win10,很抱歉,它只支持一种语言,请升级至专业版。

如何知道自己系统有哪些输入法可以选择呢?
可以在后台输入InputLanguageManager.Current.AvailableInputLanguages;
该属性返回当前系统可以使用的输入法语言的枚举集合。


1.2 RestoreInputLanguage(光标离开时是否恢复语言)


为TextBox设置InputLanguageManager.RestoreInputLanguage该附加属性后,光标移出TextBox时,会恢复之前的语言。该属性只有True和False两个值可选。

二、InputMethod类


InputMethod类有6个附加属性,使用该类可以控制输入模式,例如设置是否启用输入法,限制输入内容等。

2.1 PreferredImeState(设置输入法状态)


InputMethod.PreferredImeState该附加属性可以设置输入法的首选状态。有三个枚举值:On、Off、DoNotCare。设为On时,启用输入法。设为Off时,关闭输入转换。DoNotCare时,无效果。
关闭输入转换后只能进行英文数字符号的输入,即无法将字母转换成其他语言。可以手动恢复转换模式。



2.2 IsInputMethodEnabled(是否启用输入法)


InputMethod.IsInputMethodEnabled该属性控制是否启用输入法,如果设置为False则输入法无效,无法手动启动。



2.3 PreferredImeConversionMode(设置转换模式)


InputMethod.PreferredImeConversionMode该属性可以设置输入法的转换模式,一共有11个枚举值可以选择。

枚举值 描述
Alphanumeric 输入法使用字母数字转换模式。
CharCode 输入法使用字符代码转换模式。
DoNotCare 输入法不考虑使用何种输入转换方法;实际的转换方法不确定。
Eudc 输入法使用 EUDC(最终用户定义的字符)转换模式。
Fixed 输入法使用固定转换模式。
FullShape 输入法使用全形转换模式。
Katakana 输入法使用片假名转换模式。
Native 输入法使用本机字符(平假名、朝鲜文和中文)转换模式。
NoConversion 输入法不会执行任何输入转换。
Roman 输入法使用罗马字符转换模式。
Symbol 输入法使用符号转换模式。


我个人经常使用这个属性,这个属性当你光标移入TextBox时,可以切换转换模式,配合InputLanguageManager类可以准确切换至日语输入法,并使用平假名的转换模式。在工作中经常使用。

2.4 PreferredImeSentenceMode(设置输入法的联想功能)


InputMethod.PreferredImeSentenceMode预设句子模式,即选择智能联想模式。就是输入时会猜测你想输入的单词然后给你几个候选单词。如果禁用会导致你的输入法没有智能联想功能。
有7种枚举值可以选择。

枚举值 描述
Automatic 该输入法自动使用句型转换方法。
Conversation 该输入法使用对话样式句型转换。
DoNotCare 该输入法不关心使用了哪个句型转换方法;实际的句型转换模式不确定。
None 该输入法不执行任何句型转换。
PhrasePrediction 该输入法使用词组联想句型转换。
PluralClause 该输入法使用复数从句句型转换。
SingleConversion 该输入法使用单个日文汉字/朝鲜文汉字句型转换。


2.5 InputScope(设置输入范围)


InputMethod.InputScope设置输入法输入的方式的输入范围名称。使用该属性可以限制输入内容,有大量选项供开发者选择。这里附上枚举值介绍的网址枚举类:InputScopeNameValue
内容较多,就不在这里细说,有需要的读者可以自己前往查阅资料。

2.6 IsInputMethodSuspended(是否挂起输入法)


InputMethod.IsInputMethodSuspended设置该属性以决定是否挂起输入法。

对你有帮助吗?点个赞吧~