• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C#教程 > C#中Winfrom默认输入法的设置方法

C#中Winfrom默认输入法的设置方法

作者:永远爱好写程序 字体:[增加 减小] 来源:互联网 时间:2017-05-28

永远爱好写程序 通过本文主要向大家介绍了c#winfrom,c#winfrom框架,c#winfrom教程,c#winfrom项目,winfrom等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

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

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

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

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

#region 修正输入法全角/半角的问题
//声明一些API函数 
[DllImport("imm32.dll")]
public static extern IntPtr ImmGetContext(IntPtr hwnd);
[DllImport("imm32.dll")]
public static extern bool ImmGetOpenStatus(IntPtr himc);
[DllImport("imm32.dll")]
public static extern bool ImmSetOpenStatus(IntPtr himc, bool b);
[DllImport("imm32.dll")]
public static extern bool ImmGetConversionStatus(IntPtr himc, ref int lpdw, ref  int lpdw2);
[DllImport("imm32.dll")]
public static extern int ImmSimulateHotKey(IntPtr hwnd, int lngHotkey);
private const int IME_CMODE_FULLSHAPE = 0x8;
private const int IME_CHOTKEY_SHAPE_TOGGLE = 0x11;
protected override void OnActivated(EventArgs e)
{
  base.OnActivated(e);
  IntPtr HIme = ImmGetContext(this.Handle);  
  //如果输入法处于打开状态 
  if (ImmGetOpenStatus(HIme))
  {
    int iMode = 0;
    int iSentence = 0;
    //检索输入法信息 
    bool bSuccess = ImmGetConversionStatus(HIme, ref iMode, ref iSentence);  
    if (bSuccess)
    {
      //如果是全角,转换成半角 
      if ((iMode & IME_CMODE_FULLSHAPE) > 0)    
        ImmSimulateHotKey(this.Handle, IME_CHOTKEY_SHAPE_TOGGLE);    
    }
  }
}
#endregion 修正输入法全角/半角的问题
</div>

注意:需要引用以下命名空间:using System.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 使用描述单个字符或成组字符的基字符序列,以便允许您输入范围较广的一组字符。基字符可以是来自朝鲜文音节的成分字母、日语汉字字符的拼音成分,或者中文字符的各种组合。

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

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

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
public class Form1 : System.Windows.Forms.Form
{
  RichTextBox rtb = new RichTextBox();
  public Form1()
  {
    this.Controls.Add(rtb);
    rtb.Dock = DockStyle.Fill;
    this.InputLanguageChanged += new InputLanguageChangedEventHandler(languageChange);
  }
  private void languageChange(Object sender, InputLanguageChangedEventArgs e)
  {
    // If the input language is Japanese, set the initial IMEMode to Katakana.
    if (e.InputLanguage.Culture.TwoLetterISOLanguageName.Equals("ja"))
    {
      rtb.ImeMode = System.Windows.Forms.ImeMode.Katakana;
    }
  }
  public static void Main(string[] args)
  {
    Application.Run(new Form1());
  }
}
</div>

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

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C#中Winfrom默认输入法的设置方法
  • C# winfrom 模拟ftp文件管理实现代码

相关文章

  • 2017-05-28C#数据绑定(DataBinding)简单实现方法
  • 2017-05-28C# 禁用鼠标中间键的方法
  • 2017-05-28C#解析json文件的实现代码
  • 2017-05-28C#实现DataTable映射成Model的方法(附源码)
  • 2017-05-28c#委托详解和和示例分享
  • 2017-05-28利用C#实现分布式数据库查询
  • 2017-05-28C#、ASP.NET通用扩展工具类之LogicSugar
  • 2017-05-28C#中将字符串转换为整型的三种解决方法总结
  • 2017-05-28C#警惕匿名方法造成的变量共享实例分析
  • 2017-05-28C# 获取系统进程的用户名

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 深入多线程之:Wait与Pulse的使用详解
    • C# 设计模式系列教程-简单工厂模式
    • C# SendInput 模拟鼠标操作的实现方法
    • C#实现的调用DOS命令操作类实例
    • C#中尾递归的使用、优化及编译器优化
    • Winform实现将网页生成图片的方法
    • C# 游戏外挂实现核心代码
    • C#获取两个数的最大公约数和最小公倍数示例
    • C#特性 迭代器(下) yield以及流的延迟计算
    • C#实现Zip压缩目录中所有文件的方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有