WPF 设置TextBox的输入法

一、InputLanguageManager类

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

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

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

<Grid>
    <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>
	<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>
	<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>
	<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设置该属性以决定是否挂起输入法。

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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

笑我归无处

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值