C#控制输入法详细剖析

开发 后端
这里介绍为了C#控制输入法,.NET类库在System.Windows.Forms.InputLanguage类中提供了支持。我计划先花一点时间讲述InputLanguage类的功能,随后举一个实例InputLanguageRichEdit。

本文向大家介绍C#控制输入法,可能好多人还不知道C#控制输入法,没有关系,看完本文你肯定有不少收获,希望本文能教会你更多东西。

在Windows系统一般都安装了至少三种输入法,在输入数据时常常会切换输入法,虽然Windows系统提供了切换快捷健,但对输入工作还是带来了不少麻烦。如果在应用程序中为用户提供智能输入法自动切换,那么这样的应用程序就显得更加专业、更加具有竞争力。不知你可用过Access,在表数据输入时Access自动切换输入法,很酷吧,现在你也可以实现这一切。如果也想你的程式也酷一下的话,请继续...

为了C#控制输入法,.NET类库在System.Windows.Forms.InputLanguage类中提供了支持。我计划先花一点时间讲述InputLanguage类的功能,随后举一个实例InputLanguageRichEdit。

1、InputLanguage类是一个密封类,它提供了许多方法和属性实现输入法管理功能,这其中有几个属性尤其重要,我将在下面逐一讲解,如果你想全面了解类的全部方法和属性,请浏览MSDN。

public static InputLanguage CurrentInputLanguage {get; set;}  
//获得或设置当前线程的输入法。  
 
public static InputLanguage DefaultInputLanguage {get;}  
//获得缺省输入法。  
 
public static InputLanguageCollection InstalledInputLanguages{get;}  
//获得系统输入法集。可以通过这个容器对象列举系统当前安装的输入法列表。  
 
public string LayoutName {get;}  
//获得输入法在系统托盘中的注册名称。  
 
......  
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.

2、我们已经研究了InputLanguage类提供的几个重要属性了,现在可以开始动手在应用开发中应用InputLanguage类。我想创建一个.NET Window Form的系统程序,用一个列表框列举当前系统安装的所有输入法,通过改变列表框的选项自动改变当前线程的输入法。同时还实现了根据桌面托盘中C#控制输入法的变化来改变列表框的选项。

(1)、新建项目 --> 选择"Visual C#项目" --> 输入项目名:InputLanguageRichEdit。

(2)、在"工具箱"中拖一个RichTextBox控件,命名为:richTextBox1;一个ComboBox控件,命名为:comboBox1;一个Button控件,命名为:But_Exit。

(3)、用下面的代码代替

private void InitializeComponent()。  
{  
this.comboBox1 = new System.Windows.Forms.ComboBox();  
this.richTextBox1 = new System.Windows.Forms.RichTextBox();  
this.But_Eixt = new System.Windows.Forms.Button();  
this.SuspendLayout();  
//  
// comboBox1  
//  
this.comboBox1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;  
this.comboBox1.DropDownWidth = 160;  
this.comboBox1.Location = new System.Drawing.Point(8, 232);  
this.comboBox1.Name = "comboBox1";  
this.comboBox1.Size = new System.Drawing.Size(168, 20);  
this.comboBox1.TabIndex = 1;  
this.comboBox1.SelectedIndexChanged += new   System.EventHandler 
(this.comboBox1_SelectedIndexChanged);  
//   // richTextBox1   //   this.richTextBox1.Dock = System.Windows.Forms.DockStyle.Top;   this.richTextBox1.Name = "richTextBox1";   this.richTextBox1.Size = new System.Drawing.Size(292, 208);   this.richTextBox1.TabIndex = 0;   this.richTextBox1.Text = "";   //   // But_Eixt   //   this.But_Eixt.Location = new System.Drawing.Point(200, 232);   this.But_Eixt.Name = "But_Eixt";   this.But_Eixt.TabIndex = 2;   this.But_Eixt.Text = "Eixt";   //   // Form1   //   this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);   this.ClientSize = new System.Drawing.Size(292, 273);   this.Controls.AddRange(new System.Windows.Forms.Control[] {   this.But_Eixt,this.comboBox1,this.richTextBox1});   this.Name = "Form1";   this.Text = "Form1";   this.Load += new System.EventHandler(this.Form1_Load);   this.InputLanguageChanged += new    System.Windows.Forms.InputLanguageChangedEventHandler (this.ChangeInput);   this.ResumeLayout(false);  
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.

(4)、插入下面代码:

private void Form1_Load(object sender, System.EventArgs e)  
{  
InputLanguageCollection ilc = InputLanguage.InstalledInputLanguages;  
foreach ( InputLanguage il in ilc )  
{  
comboBox1.Items.Add( il.LayoutName );  
}  
comboBox1.SelectedIndex = InputLanguage.InstalledInputLanguages.IndexOf 
( InputLanguage.CurrentInputLanguage ) ;  
}   private void comboBox1_SelectedIndexChanged(object sender, System.EventArgs e)   {   InputLanguage il = InputLanguage.
InstalledInputLanguages[ comboBox1.SelectedIndex ];  
InputLanguage.CurrentInputLanguage = il;   }   private void ChangeInput(object sender, 
System.Windows.Forms.InputLanguageChangedEventArgs e)  
{   InputLanguage il = e.InputLanguage ;   int i = InputLanguage.InstalledInputLanguages.IndexOf( il );   if( i >= 0 && i < InputLanguage.InstalledInputLanguages.Count )   {   comboBox1.SelectedIndex = i ;   }   }   private void But_Eixt_Click(object sender, System.EventArgs e)   {   Application.Exit();   }  
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.

【编辑推荐】

  1. C#窗体里调用浅谈
  2. C#调用ListEmployee命令
  3. C# CreateEmployeeDefinition()函数
  4. C#实现断点续传详细剖析
  5. C# Employee对象浅谈
责任编辑:佚名 来源: 博客园
相关推荐

2009-08-27 17:14:36

C# Socket

2009-09-11 11:17:04

C#引用类型

2009-08-27 17:51:34

C#匿名方法

2009-08-31 17:26:32

C#异常处理

2009-09-18 10:00:17

C#数组操作

2009-09-03 16:58:49

C#内存管理

2021-08-04 16:36:00

Windows 10Windows微软

2021-11-11 23:00:50

Windows 10Windows微软

2009-09-04 11:06:40

C#访问修饰符

2009-08-28 15:38:49

C#实现断点续传

2009-09-07 13:42:56

C# Pop3类

2021-10-15 22:17:08

Windows 10Windows微软

2011-09-15 09:34:48

ubuntu输入法

2021-04-20 08:30:23

微信微信输入法张小龙

2010-06-08 18:50:30

OpenSUSE 输入

2010-01-11 10:09:14

Ubuntulinux输入法设置

2010-01-08 16:50:51

Ubuntu SCIM

2012-02-15 11:14:21

搜狗输入法

2021-11-06 23:04:10

Windows 10Windows微软

2023-09-09 07:08:37

百度输入法AI
点赞
收藏

51CTO技术栈公众号