为TextBox设置InputLanguageManager.RestoreInputLanguage
该附加属性后,光标移出TextBox时,会恢复之前的语言。该属性只有True
和False
两个值可选。
InputMethod类有6个附加属性,使用该类可以控制输入模式,例如设置是否启用输入法,限制输入内容等。
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>
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>
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
类可以准确切换至日语输入法,并使用平假名的转换模式。在工作中经常使用。
InputMethod.PreferredImeSentenceMode
预设句子模式,即选择智能联想模式。就是输入时会猜测你想输入的单词然后给你几个候选单词。如果禁用会导致你的输入法没有智能联想功能。
有7种枚举值可以选择。
枚举值 | 描述 |
---|
Automatic | 该输入法自动使用句型转换方法。 |
Conversation | 该输入法使用对话样式句型转换。 |
DoNotCare | 该输入法不关心使用了哪个句型转换方法;实际的句型转换模式不确定。 |
None | 该输入法不执行任何句型转换。 |
PhrasePrediction | 该输入法使用词组联想句型转换。 |
PluralClause | 该输入法使用复数从句句型转换。 |
SingleConversion | 该输入法使用单个日文汉字/朝鲜文汉字句型转换。 |
InputMethod.InputScope
设置输入法输入的方式的输入范围名称。使用该属性可以限制输入内容,有大量选项供开发者选择。这里附上枚举值介绍的网址枚举类:InputScopeNameValue
内容较多,就不在这里细说,有需要的读者可以自己前往查阅资料。
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只能输入数字的效果,具体实现可以根据自己的需求选择其中一种。