Csharp/C#教程:C#中Winfrom默认输入法的设置方法分享

本文实例讲述了C#中Winfrom默认输入法的设置方法。分享给大家供大家参考。具体分析如下:

在WINFORM中我们经常遇到文本输入框中输入法被禁用或老是变全角输入法等问题,经查阅相关资料,现小结如下:

一、Control.ImeMode属性:获取或设置控件的输入法编辑器(IME)模式。

(1)由于窗体属性继承关系,如果你的WINFORM窗体中大部分需要设置为输入法有效状态,可以设置为FORM的ImeMode属性为On.
(2)如果需要某些TextBox为输入法有效,则使用ImeMode.On
(3)如果需要设置整个窗体的输入法全部为半角,可以使用以下代码:

#region修正输入法全角/半角的问题 //声明一些API函数 [DllImport("imm32.dll")] publicstaticexternIntPtrImmGetContext(IntPtrhwnd); [DllImport("imm32.dll")] publicstaticexternboolImmGetOpenStatus(IntPtrhimc); [DllImport("imm32.dll")] publicstaticexternboolImmSetOpenStatus(IntPtrhimc,boolb); [DllImport("imm32.dll")] publicstaticexternboolImmGetConversionStatus(IntPtrhimc,refintlpdw,refintlpdw2); [DllImport("imm32.dll")] publicstaticexternintImmSimulateHotKey(IntPtrhwnd,intlngHotkey); privateconstintIME_CMODE_FULLSHAPE=0x8; privateconstintIME_CHOTKEY_SHAPE_TOGGLE=0x11; protectedoverridevoidOnActivated(EventArgse) { base.OnActivated(e); IntPtrHIme=ImmGetContext(this.Handle); //如果输入法处于打开状态 if(ImmGetOpenStatus(HIme)) { intiMode=0; intiSentence=0; //检索输入法信息 boolbSuccess=ImmGetConversionStatus(HIme,refiMode,refiSentence); if(bSuccess) { //如果是全角,转换成半角 if((iMode&IME_CMODE_FULLSHAPE)>0) ImmSimulateHotKey(this.Handle,IME_CHOTKEY_SHAPE_TOGGLE); } } } #endregion修正输入法全角/半角的问题

注意:需要引用以下命名空间:usingSystem.Runtime.InteropServices; 

(4)对于仅用于输入数值的TextBox控件,ImeMode属性通常设置为ImeMode.Off。对于Form类,ImeMode属性值设置为ImeMode.NoControl。

(5)不直接支持输入方法编辑器或允许从IME直接输入的大多数类将此属性的值设置为NoControl。

重要事项:

除非ImeMode已经以编程方式设置为ImeMode.Disable,否则用户能够以交互方式更改它。在前一种情况下,用户将无法使用IME。

二、ImeMode各属性的含义:

ImeMode枚举:指定一个值,该值是用来确定在选定了对象时该对象的输入法编辑器(IME)的状态。

以下是微软的解释:

  成员名称 说明   Alpha 字母数字单字节字符(SBC)。此设置仅对朝鲜语和日语IME有效。    AlphaFull 字母数字双字节字符。此设置仅对朝鲜语和日语IME有效。    Close     Disable IME被禁用。如果使用此设置,则用户无法从键盘打开IME,而且IME浮动窗口处于隐藏状态。    Hangul 朝鲜文SBC。此设置仅对朝鲜语IME有效。    HangulFull 朝鲜文DBC。此设置仅对朝鲜语IME有效。    Hiragana 平假名DBC。此设置仅对日语IME有效。    Inherit 继承父控件的IME模式。    Katakana 片假名DBC。此设置仅对日语IME有效。    KatakanaHalf 片假名SBC。此设置仅对日语IME有效。    NoControl 无(默认)。    Off IME已关闭。此模式指示IME已关闭,这意味着该对象的行为方式与英语输入模式相同。此设置仅对日语、简体中文和繁体中文IME有效。    On IME已打开。此值指示IME已打开,可以输入中文或日语特定的字符。此设置仅对日语、简体中文和繁体中文IME有效。 
 
备注:

输入法编辑器(IME)允许用户输入和编辑中文、日语和朝鲜语字符。IME是用于编写中文、日语和朝鲜语脚本的基本组件。这些书写体系具有的字符比可为常规键盘编码的字符要多。这些语言的IME使用描述单个字符或成组字符的基字符序列,以便允许您输入范围较广的一组字符。基字符可以是来自朝鲜文音节的成分字母、日语汉字字符的拼音成分,或者中文字符的各种组合。

三、如果设置为合适的输入法?

这里仅给一个例子,打击可以举一返三:

usingSystem; usingSystem.Drawing; usingSystem.Collections; usingSystem.ComponentModel; usingSystem.Windows.Forms; usingSystem.Data; publicclassForm1:System.Windows.Forms.Form { RichTextBoxrtb=newRichTextBox(); publicForm1() { this.Controls.Add(rtb); rtb.Dock=DockStyle.Fill; this.InputLanguageChanged+=newInputLanguageChangedEventHandler(languageChange); } privatevoidlanguageChange(Objectsender,InputLanguageChangedEventArgse) { //IftheinputlanguageisJapanese,settheinitialIMEModetoKatakana. if(e.InputLanguage.Culture.TwoLetterISOLanguageName.Equals("ja")) { rtb.ImeMode=System.Windows.Forms.ImeMode.Katakana; } } publicstaticvoidMain(string[]args) { Application.Run(newForm1()); } }

希望本文所述对大家的C#程序设计有所帮助。

您可能感兴趣的文章:C#利用VS中插件打包并发布winfrom程序C#winfrom实现读取修改xmlC#winfrom模拟ftp文件管理实现代码C#导出Excel的6种简单方法实现C#获取Excel第一列的实例方法C#插入图片到Excel表格单元格代码详解C#WinFrom导出Excel过程解析

标签: 输入法 rom om 方法 输入 默认 nf

c++ cin 作为while条件(详解)

浅谈c++的编译和运行

上述就是C#学习教程:C#中Winfrom默认输入法的设置方法分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/906437.html

(0)
上一篇 2021年10月23日
下一篇 2021年10月23日

精彩推荐