一、InputLanguageManager类

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

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

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

< Grid.RowDefinitions > < RowDefinition Height = " * " /> < RowDefinition Height = " * " /> </ Grid.RowDefinitions > < WrapPanel Grid.Row = " 0 " > < Label Content = " Language1: " /> < TextBox Width = " 180 " Height = " 30 " InputLanguageManager.InputLanguage = " en-US " /> </ WrapPanel > < WrapPanel Grid.Row = " 1 " > < Label Content = " Language2: " /> < TextBox Width = " 180 " Height = " 30 " InputLanguageManager.InputLanguage = " zh-CN " /> </ WrapPanel > </ Grid >

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

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

var languages= InputLanguageManager.Current.AvailableInputLanguages;
foreach (var languagein languages)
    Console.WriteLine(language);

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

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

二、InputMethod类

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

2.1 PreferredImeState(设置输入法状态)

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

<Grid.RowDefinitions> <RowDefinition Height="*" /> <RowDefinition Height="*" /> </Grid.RowDefinitions> <WrapPanel Grid.Row="0"> <Label Content="Language1:" /> <TextBox Width="180" Height="30" InputMethod.PreferredImeState="On" InputLanguageManager.InputLanguage="zh-CN" /> </WrapPanel> <WrapPanel Grid.Row="1"> <Label Content="Language2:" /> <TextBox Width="180" Height="30" InputMethod.PreferredImeState="Off" InputLanguageManager.InputLanguage="zh-CN" /> </WrapPanel> </Grid>

2.2 IsInputMethodEnabled(是否启用输入法)

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

<Grid.RowDefinitions> <RowDefinition Height="*" /> <RowDefinition Height="*" /> </Grid.RowDefinitions> <WrapPanel Grid.Row="0"> <Label Content="Language1:" /> <TextBox Width="180" Height="30" InputMethod.IsInputMethodEnabled="True" InputLanguageManager.InputLanguage="zh-CN" /> </WrapPanel> <WrapPanel Grid.Row="1"> <Label Content="Language2:" /> <TextBox Width="180" Height="30" InputMethod.IsInputMethodEnabled="False" InputLanguageManager.InputLanguage="zh-CN" /> </WrapPanel> </Grid>

2.3 PreferredImeConversionMode(设置转换模式)

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

枚举值描述
Alphanumeric输入法使用字母数字转换模式。
CharCode输入法使用字符代码转换模式。
DoNotCare输入法不考虑使用何种输入转换方法;实际的转换方法不确定。
Eudc输入法使用 EUDC(最终用户定义的字符)转换模式。
Fixed输入法使用固定转换模式。
FullShape输入法使用全形转换模式。
Katakana输入法使用片假名转换模式。
Native输入法使用本机字符(平假名、朝鲜文和中文)转换模式。
NoConversion输入法不会执行任何输入转换。
Roman输入法使用罗马字符转换模式。
Symbol输入法使用符号转换模式。
<Grid.RowDefinitions> <RowDefinition Height="*" /> <RowDefinition Height="*" /> </Grid.RowDefinitions> <WrapPanel Grid.Row="0"> <Label Content="Language1:" /> <TextBox Width="180" Height="30" InputMethod.IsInputMethodEnabled="True" InputLanguageManager.InputLanguage="zh-CN" /> </WrapPanel> <WrapPanel Grid.Row="1"> <Label Content="Language2:" /> <TextBox Width="180" Height="30" InputMethod.IsInputMethodEnabled="False" InputLanguageManager.InputLanguage="zh-CN" /> </WrapPanel> </Grid>

我个人经常使用这个属性,这个属性当你光标移入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设置该属性以决定是否挂起输入法。

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

使用WPF做Windows客户端开发时,如果需要控制输入框的输入语言,本文为读者介绍了两个控制输入模式的类,InputLanguageManager和InputMethod。用于控制输入法的语言,以及限制输入内容。
WPF自制TextBox利用Validation验证来实现必填项和焦点的提示特效。 此为专门为MVVM模式的实现。网上要么搜不到真实可用的,要么就是一大堆看不懂的机制绕路太远。我写了个简单明了的。希望可以帮助大家更好地利用Validation机制与MVVM模式。 如需要必填项或焦点得失的提示效果特效的,可以找我的另一个资源,里面很详细。效果很好。
//前台UI设置 <TextBox Width="100" Height="30" PreviewTextInput="TextBox_PreviewTextInput" PreviewKeyDown="TextBox_PreviewKeyDown" InputMethod.IsInputMethodEnabled="False"/> InputMethod.IsInputMethodEnabled="False"禁用输入法 后台代码限定只能输入数字 private void TextB
WPF控制项输入法设定新的Windows版本碰到TextBox会预设使用注音有的时候,我们会想设定让TextBox使用英文,当使用者想使用中文再自行切换。方法如下,此方法不会限制只能输入英文,只是设定初次获得控制项焦点的输入法。Style的写法: <Setter Property="InputMethod.InputScope"> <Setter.Value>
<TextBox x:Name="Barcode" Width="90" Height="26" Margin="2" BorderThickness="2" InputMethod.IsInputMethodEnabled="False" PreviewTextInput="Barcode_PreviewTextInput">
最近项目遇到这个问题,网上搜了半天,也没有好的解决方案,哥怒了!于是自己想了个笨办法: 在登录密码框登录时,只能按英文输入法输入,强制密码框使用英文输入法: 思路是:在密码框的键盘焦点事件和键盘输入事件,列出当前系统所有输入法,将系统输入法强制切换成英文输入法。可能也不是很完美的办法,希望大家多指教,先谢过了。         xmlns="http://schemas.
using System.Diagnostics.CodeAnalysis; using System.Runtime.InteropServices; using System.Security; using System.Windows; using System.Windows.Controls; using System.Windows.Controls.Primitives;
从我在博客园写第一篇博客到现在已经有1年半了,我的第一篇博客写的就是手写识别,当时,客户需求在应用中加入手写输入功能,由于第三方的手写输入法都无法定制界面,所以领导决定自主开发,所以我就很简单地基于Tablet pc写了一个WPF控件,由于几个瓶颈问题,导致这个输入功能只能在我们的UI框架里使用,而无法做到像输入法那样可以输入到任意窗口。   时隔1年半,随着各...
可以通过以下几种方法实现WPF TextBox只能输入数字: 1. 使用正则表达式限制输入:在TextBox的PreviewTextInput事件中添加正则表达式判断,只允许输入数字。 2. 使用InputScope属性:将TextBox的InputScope属性设置为Number,这样只能输入数字。 3. 使用TextChanged事件:在TextChanged事件中判断输入的字符是否为数字,如果不是则将其删除。 以上三种方法都可以实现WPF TextBox只能输入数字的效果,具体实现可以根据自己的需求选择其中一种。